Microsoft Edit
(github.com/microsoft)- Microsoft Edit est un éditeur conçu pour des besoins d’édition simples, qui rend hommage au classique MS-DOS Editor tout en offrant une interface moderne et des contrôles de saisie similaires à VS Code
- Son objectif est de proposer un éditeur très accessible, utilisable facilement même par des personnes peu familières avec le terminal
- L’installation est possible via WinGet sur Windows, Homebrew sur macOS, et via un script d’installation sur Linux si la distribution ne fournit pas de binaire ou si l’on souhaite compiler soi-même
- Le projet est développé en Rust, et l’usage de Rust nightly est recommandé car il réduit fortement la taille du binaire et améliore légèrement les performances
- Les gestionnaires de paquets sont invités à privilégier le nom
mseditplutôt queediten raison de possibles conflits de nom d’exécutable, et la configuration de la bibliothèque ICU influe sur les fonctions de recherche/remplacement
Objectif et positionnement de Microsoft Edit
- Edit est un éditeur simple, pensé pour des « simple needs »
- Il rend hommage au classique MS-DOS Editor tout en proposant une interface moderne et des contrôles de saisie similaires à ceux de VS Code
- Il vise à être un éditeur accessible, facile à utiliser même pour les personnes peu habituées au terminal
Méthodes d’installation
- Les binaires peuvent être téléchargés depuis la page Releases
-
Windows
- La dernière version peut être installée avec WinGet
winget install Microsoft.Edit -
Linux
- Si la distribution ne fournit pas de binaire ou si vous souhaitez compiler vous-même, vous pouvez utiliser le script d’installation
- Les prérequis sont Rust, un compilateur C, ICU, curl ou wget, et tar
- L’installation par défaut place
mseditdans~/.local/bin
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh- Avec des options supplémentaires,
--devcompile directement depuis la branche main et--systeminstalle dans/usr/local/bin
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/microsoft/edit/… | sh -s -- --dev --system -
macOS
- La dernière version peut être installée avec Homebrew
brew install msedit
Méthode de compilation
- La compilation nécessite une installation de Rust et un clone du dépôt
- Si vous utilisez Rust nightly, construisez la version release avec la commande suivante
cargo build --release --config .cargo/release.toml - Si vous utilisez Rust stable, il est recommandé de définir la variable d’environnement
RUSTC_BOOTSTRAP=1et de suivre les instructions de compilation nightly- Cette méthode réduit fortement la taille du binaire et améliore légèrement les performances
- Pour compiler avec Rust stable sans configuration particulière, utilisez la commande suivante
cargo build --release
Options de configuration de la compilation
- La configuration peut être ajustée via des variables d’environnement au moment de la compilation
EDIT_CFG_ICU*concerne la configuration des noms de bibliothèques ICU, et il est recommandé aux gestionnaires de paquets Linux d’examiner ces optionsEDIT_CFG_LANGUAGESpermet de spécifier, sous forme de liste séparée par des virgules, les langues à inclure dans la compilation- Les langues disponibles se trouvent dans i18n/edit.toml
Points d’attention pour les gestionnaires de paquets
- Le nom standard de l’exécutable est
edit, et son nom alternatif estmsedit - Comme
editpeut entrer en conflit avec des commandes existantes, il est recommandé d’utilisermseditpour le nom du paquet et de l’exécutable - Il est conseillé d’éviter des noms comme
ms-edit - Si possible, il est recommandé d’attribuer l’alias
edit
Configuration liée à ICU
- Ce projet dépend de manière optionnelle de la bibliothèque ICU pour les fonctions de recherche et remplacement
- Par défaut, il recherche les noms de bibliothèques ICU propres à chaque plateforme
- Windows:
icuuc.dll,icuin.dll - macOS:
libicucore.dylib - Linux et autres:
libicuuc.so,libicui18n.so
- Windows:
- Si le SONAME de l’environnement d’installation est différent, il faut définir des variables d’environnement lors de la compilation
EDIT_CFG_ICUUC_SONAME: par exemplelibicuuc.so.76EDIT_CFG_ICUI18N_SONAME: par exemplelibicui18n.so.76
- Les symboles ICU sont supposés, par défaut, être exportés sous une forme comme
u_errorName, sans préfixe_ni suffixe de version - Dans les environnements utilisant une autre forme de symboles, des variables d’environnement supplémentaires peuvent être utilisées
EDIT_CFG_ICU_CPP_EXPORTS=true: recherche des symboles C++ comme_u_errorName, activé par défaut sur macOSEDIT_CFG_ICU_RENAMING_VERSION=76: recherche des symboles commeu_errorName_76
- Si
EDIT_CFG_ICU_RENAMING_AUTO_DETECT=trueest défini, l’exécutable essaiera de détecter à l’exécution la valeur de la version de renommage- Cette méthode n’est pas officiellement prise en charge par ICU, il est donc recommandé de ne pas s’y fier
- Sur UNIX, elle est activée par défaut sauf sur macOS lorsqu’aucune autre option n’est disponible
- Le test de la configuration de compilation s’exécute avec
cargo testen ajoutant le drapeau--ignoredcargo test -- --ignored
1 commentaires
Avis sur Hacker News
Ce billet a suscité assez d’intérêt pour être publié trois fois en une semaine
Et maintenant celui-ci
Pour le public cible de cet éditeur, je recommandais auparavant micro ; je me demande s’il faudrait maintenant changer
1: https://micro-editor.github.io/
edit, du moins quand je l’ai essayé rapidement, ne prenait même pas en charge la coloration syntaxique par défautJe l’utilise comme éditeur de terminal à la place de nano
[1]: https://craigbarnes.gitlab.io/dte/
Il gère aussi plutôt bien les gros fichiers
"winget install zyedidia.micro". Ça rappelle les éditeurs 8 bits et 16 bits de la même époqueJe suis vraiment curieux de savoir comment un projet comme celui-ci obtient le feu vert dans une organisation de la taille de Microsoft. Est-ce le projet annexe de quelques développeurs, ou bien une partie de la feuille de route produit ?
Comment ont-ils convaincu la direction de consacrer du temps à ça ?
Comme Windows inclut SSH Server depuis un bon moment, il peut être entièrement administré via SSH, et il fallait un éditeur sans modes utilisable aussi par les administrateurs Windows qui n’ont pas l’expérience de vi
Il arrive aussi que des profils techniques dans une organisation de recherche démarrent avec un peu de marge, ou qu’un financement soit accordé après une analyse approfondie et plusieurs semestres
Vu le nombre de contributeurs ici, ce projet était probablement un investissement stratégique. Ce n’est pas quelque chose sorti en une nuit
L’edit.com original de DOS 6.22 puis 7.0, à l’époque de Win95, a été mon premier IDE. J’ai commencé avec qbasic et je m’étais habitué à une interface similaire, voire identique, puis j’ai continué à utiliser edit.com quand j’ai appris le C/C++ avec djgpp
Mon « fichier de projet » était un
e.batcontenantedit file1.cpp file2.cpp file3.cpp, et je l’utilisais parce qu’il avait une prise en charge multifichier plutôt correcte, avec un basculement facile via Alt-1,2,3. Aujourd’hui encore, je remappe les raccourcis de mes éditeurs pour changer de fichier avec Alt/Cmd-1,2,3, et j’essaie de garder mon « ensemble actif » limité aux quelques premiers fichiersIl n’y avait pas de coloration syntaxique et le comportement de l’indentation n’était pas très bon, donc ce n’était pas un excellent éditeur de code. C’est pour ça qu’au début de ma carrière j’utilisais une indentation de deux espaces, facile à taper à la main et qui ne ressemblait pas à des tabulations. Mais j’avais quand même une forte impression d’être au contact direct du code
Je savais que beaucoup d’autres utilisaient des éditeurs comme
qedit, mais, bizarrement, ils ne me convenaient pas, et les éditeurs de style Unix semblaient maladroits sous DOSAprès un bref essai, il semble bien prendre en charge plusieurs tampons, mais on ne dirait pas qu’il permette de basculer entre eux avec les mêmes raccourcis clavier
Et ce n’était pas simplement similaire, c’était littéralement la même chose. EDIT.COM ne faisait que lancer QBASIC avec un drapeau spécial, et on pouvait aussi lancer QBASIC directement avec ce drapeau. Comme indiqué dans https://news.ycombinator.com/item?id=44037509, je l’ai réellement fait pour m’amuser
Si l’on saisissait toute une ligne en minuscules puis qu’on appuyait sur Entrée, les mots réservés étaient automatiquement convertis en majuscules. Ce n’était pas extraordinaire, mais ça aidait
copy con, edit a vraiment été une bénédictionIl y a beaucoup de choses qui me plaisent. Déjà, une liste de dépendances vide, ça suffit à me convaincre
Ça fonctionne très bien. J’ai du mal à croire qu’ils aient construit tout un TUI, avec navigateur de fichiers et boîtes de dialogue, juste pour ça. J’aimerais l’utiliser dans mes propres projets, et je me demande à quel point ce serait simple. Si quelqu’un du projet est ici, je serais aussi curieux de savoir pourquoi ils n’ont pas utilisé Ratatui
La qualité du code est aussi de tout premier ordre, et je n’ai qu’un mot à dire : Bravo !
Pour quelque chose destiné à être distribué comme outil de base utilisé par les administrateurs sur un système d’exploitation comme Windows, c’est un choix raisonnable. Pour plus de contexte sur le fait de « tout faire soi-même », voir les réponses de lhecker
[1]: https://news.ycombinator.com/threads?id=lhecker
Il y a environ un mois, j’ai entendu dire que Microsoft avait sa propre distribution Linux pour que les utilisateurs de Windows s’y sentent plus à l’aise. De mémoire, c’était une configuration GNOME assez simple, donc rien de spécial
Je trouve surprenant que Microsoft n’ait pas saisi l’occasion de créer une distribution Linux dédiée, avec PowerShell à la place de bash, Edit aux côtés d’options comme vim et nano, et .NET ainsi que Visual Studio Code inclus dans l’installation développeur
Elle aurait aussi pu en faire l’installation WSL par défaut. Elle n’aurait sans doute pas gagné la guerre face aux distributions classiques comme Ubuntu ou Debian, mais comme il y a beaucoup d’utilisateurs Windows, elle aurait pu prendre une certaine part et devenir un choix courant
Microsoft ne peut pas contrôler le noyau Linux, mais peut contrôler l’espace utilisateur. On peut imaginer ce qui se serait passé si elle avait créé une dynamique où ses applications étaient installées par défaut dans des distributions populaires
Microsoft Edit aussi est utilisable sous Linux, comme PowerShell et d’autres. Si Microsoft avait bien joué ses cartes il y a une dizaine d’années, sa distribution pourrait aujourd’hui être dans le top 5, grâce aux nombreux utilisateurs Windows qui l’utiliseraient via WSL
Les géants de la tech peuvent imposer leur empreinte dans l’espace personnel. Il ne reste plus qu’à activer Co-Pilot par défaut dans Microsoft Edit
Ce pourrait être une sorte de “super” WINE posé sur le noyau Linux, avec, pour certains programmes, un Windows classique étroitement intégré dans une machine virtuelle en fallback
Le problème, toutefois, c’est que le noyau NT est meilleur que le noyau Linux sur de nombreux aspects de conception. Par exemple, le noyau NT peut récupérer même si le pilote GPU plante complètement, alors que Linux aurait probablement beaucoup de mal dans ce genre de situation. C’est similaire pour d’autres pilotes
Mais Windows devient de plus en plus une dette plutôt qu’un actif pour Microsoft, surtout côté serveur. Ses principales sources de revenus sont Azure et Office 365, qui affichent toujours une croissance à deux chiffres, tandis que la croissance des licences Windows stagne
Je pense qu’on verra au moins des versions comme Windows Server basé sur Linux et Windows Workstation basé sur Linux
Les équipes de support IT et de support technique ne connaissent généralement pas bien Linux et n’ont pas envie de le prendre en charge. WSL résout ce problème
La plupart des développeurs ne veulent pas vraiment utiliser Linux lui-même. Beaucoup de développeurs ne savent même pas vraiment se servir d’un terminal et dépendent d’outils GUI
Si WSL prend Ubuntu en charge, il peut tirer parti de cette notoriété
Azure Linux est un système d’exploitation pris en charge par Microsoft pour les conteneurs, les VM, les serveurs, etc.
Ça ressemble simplement à un projet fait “parce qu’on avait envie d’essayer”. Je comprends, j’ai moi aussi beaucoup fait ce genre de choses pour comprendre ce qui se passait
Mais la réécriture de Turbo Vision en FPC et sa compilation vers plusieurs cibles existent depuis 20 ans. Turbo Vision est probablement la meilleure bibliothèque de fenêtrage en mode texte qui existe
La partie intéressante commence quand on peut mapper tout l’écran texte sur un tableau de ce genre :
varScreen: Array[1..80,1..25] Of Byte Absolute $B800; // or something like that as i recallCe que Turbo Vision a apporté, ce sont des fenêtres modales et non modales déplaçables. En gros, la structure consistait à réécrire en continu ce tableau dans une boucle, et c’était assez réactif. J’ai gagné énormément d’argent avec cette bibliothèque
https://github.com/magiblot/tvision
https://news.ycombinator.com/item?id=44034961
array[1..25, 1..80] of Word absolute $B800:0000Les tableaux de TP étaient stockés en ordre ligne-major, et chaque caractère était représenté par deux octets. L’un pour le caractère lui-même, l’autre pour les attributs (couleurs premier plan/arrière-plan et clignotement)
Donc, en mieux, ce serait
array[1..25, 1..80] of packed record ch: char; attr: byte end absolute $B800:0000Pour les affichages texte monochromes comme Hercules (mode 7), il suffit de remplacer
$B800par$B000J’attends maintenant un EDLIN avec prise en charge d’Unicode
Je me souviens qu’on pouvait scripter certaines opérations d’édition en injectant des frappes au clavier via l’entrée standard depuis un fichier batch. Ça donnait l’impression de remplacer une partie des fonctionnalités de sed ou awk
Je n’ai pas essayé, mais ça doit aussi être possible avec vi. Reste à savoir si c’est une méthode complètement maudite ou non
-sIntéressant. Franchement, je ne sais pas trop pour qui ça a été conçu, mais ça a l’air sympa
editn’étant plus prise en charge dans Windows depuis 2006, il n’y avait plus depuis lors d’éditeur fourni par Microsoft utilisable en ligne de commandeLa rapidité de cet éditeur est impressionnante. https://github.com/microsoft/edit/pull/408
Pour l’instant j’utilise Helix, mais j’aime les bons TUI
En 1993, j’aimais ouvrir des fichiers binaires avec edit et voir apparaître des formes de cœur