Le papy des éditeurs de texte | ed

La collecte 28 févr. 2020

Asseyez vous et ouvrez vos cahiers, on va faire un petit cours d'histoire aujourd'hui !

Mais je vais commencer avec une question :

"Quel est le rapport entre le Bloc-notes (Notepad), Vim et Sublime Text ?"

Je commence facile comme ça vous êtes en confiance.

Réponse : Ce sont tous des éditeurs de texte. Mais je suis certain que vous l'aviez, c'est juste pour confirmer votre réussite.

Cependant les éditeurs de texte ont une histoire, et je vais vous conter celle de ed (prononcer : "/idi/").

Un éditeur de lignes

Tout commence en 1966, quand Kenneth Thompson, fraîchement diplômé d'une maîtrise en génie électrique et informatique est embauché par Bell Labs.

Une des premières choses que Ken (oui on va l'appeler Ken) a faites à son arrivée a été de réécrire QED, l'éditeur de texte qu'il utilisait pendant ses études, pour un système lié au MIT. Il a même par la suite recréé une autre version de ce programme pour un projet encore différent ! Écrire un truc pour écrire des trucs, une passion qui ne s'invente pas.

Parmi les projets sur lesquels Ken a travaillé, se trouve le "Multics project", le fameux système lié au MIT dont je parlais y a 2 secondes. Ce projet avait pour objectif de créer un système d'exploitation à temps partagé commercialement viable. Un projet révolutionnaire, qui aurait pu changer beaucoup de choses si AT&T qui fournissait le système à temps partagé n'avait pas décidé de se retirer du projet, leur système avec. Tout ça sous prétexte que "ça ne menait nulle part".

On retrouve donc Ken et Dennis Ritchie, son pote chercheur à Bell Labs, sans accès à ce système qui donnait "une sensation d'informatique interactive" au projet.
Mais c'était sans compter sur leur solution à laquelle personne s'attendait : créer leur propre système.
Si je vous dis Unix ça vous dit quelque chose ? (ébim, vous l'aviez pas vu venir celle-là)

On en arrive maintenant au mois d'août 1969, et pendant que sa petite famille va se faire plaiz' en vacance en Californie, Ken sera en train d'assembler les éléments de base de son nouveau système. Il va séparer son temps en semaines, une pour chaque élément : le système d'exploitation, le shell, l'éditeur et l'assembleur.

J'imagine que vous voyez où je veux en venir. Oui, ça y est, on atteint enfin le point central de cet article :

L'éditeur de ligne, nommé "ed" !

ed doit son nom à son prédécesseur, QED dont j'ai parlé plus haut sur lequel il a été basé, sans pour autant être une ré-implémentation exacte.
Pour écrire ce programme, Ken a décidé d'enlever certaines fonctionnalités de QED, comme le support des expressions régulières complexes ou même le fait de pouvoir ouvrir plusieurs documents et de les éditer en même temps.
ed devait être simple et efficace, et ces simplifications ont sûrement été nécessaires.
De toute façon le bro' Dennis a dit que le fait de ne pas intégrer la gestion avancée des expressions régulières n'était pas une grande perte. Alors si le poto le dit...

La pérennité du petit ed

Il existe une famille de normes techniques appellée POSIX, à laquelle le petit ed a été ajouté. Ça signifie que si vous avez un système conforme à POSIX, vous l'avez certainement d'installé sur votre ordi.

Cet éditeur a donc été précurseur de beaucoup d'autres, notamment VIM avec lequel il partage un bon nombre de commandes, telles que w pour enregistrer, q pour quitter ou encore i pour insérer.

Donc pour qui maitrîse déjà un minimum cette syntaxe, la prise en main ne devrait pas prendre beaucoup de temps. Mais par contre pour ce qui est de l'interface... Nan parce que je l'ai rabâché mais je vais pas hésiter à le refaire : ed est un éditeur de lignes.

koman sa marsh ?

Pour la plupart du commun des mortels, les éditeurs de texte en ligne de commande appartiennent au passé. Pour d'autres, c'est un sujet toujours d'actualité qui possède même son lot de pop-culture geek.

"J'utilise Vim depuis 2 ans maintenant, principalement parce que je n'ai pas encore trouvé comment le quitter"

Eh bien ed a sa propre réputation, celle d'être assez intimidant. Ce site qui apporte un tutoriel sur ed résume assez bien ce qui ressemble à une première utilisation :

$ ed
help
?
h
Invalid command suffix
?
?
^C
?
exit
?
quit
?
^Z
$ killall ed
$ vim

Pas très explicite hein ? C'est que par défaut ed affiche un simple point d'interrogation quand il ne comprend pas une commande. Pour afficher toutes les prochaines erreurs il suffit de taper un H, ce qui va rendre son utilisation tout de suite beaucoup accessible.

Mais en tant qu'éditeur de lignes, il faut rapidement oublier le plaisir de naviguer avec son petit curseur entre les mots et les lignes, de pouvoir sélectionner les caractères à la souris ou d'avoir une vue d'ensemble sur son texte.

Tout va se faire ligne par ligne, à savoir :

  1. Sélectionner sa ligne
  2. Potentiellement afficher à quoi elle ressemble
  3. Choisir ce qu'on veut remplacer et ajouter son texte

(là tout le monde est en sueur normalement)

En fait le fonctionnement reste assez simpliste, il faut juste être précis dans les ordres qu'on va donner à l'outil, et surtout RESTER CALME.
Parce que comme on est sur une interface "textuelle", tout va se passer au clavier, et les actions vont se faire en tapant plutôt qu'en cliquant.

Il faut également différencier les 2 modes principaux : commande et saisie. L'un pour faire des actions sur le texte, l'autre pour en écrire, du texte.

Exemple

Quand on lance ed, on est en mode commande, et... C'est tout. On a rien. Exemple d'affichage de l'écran :

$ ed

Voilà voilà. On lance le programme, et tout ce qu'on obtient c'est une ligne vide juste en dessous.
Alors que quand on lance VIM on est au moins accueilli par un truc :


~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                              VIM - Vi Amélioré                               
~                                                                              
~                               version 7.4.576                                
~                          par Bram Moolenaar et al.                           
~           Modifié par pkg-vim-maintainers@lists.alioth.debian.org            
~                          Vim est un logiciel libre                           
~                                                                              
~                 Devenez un utilisateur de Vim enregistré !                   
~     tapez  :help register<Entrée>   pour plus d'informations                 
~                                                                              
~     tapez  :q<Entrée>               pour sortir du programme                 
~     tapez  :help<Entrée>  ou  <F1>  pour accéder à l'aide en ligne           
~     tapez  :help version7<Entrée>   pour lire les notes de mise à jour       
~                                                                              
~                                                                              
~                                                                              
~                                                                              
~                                                                              
                                                             0,0-1        Tout

Mais comme annoncé, les 2 partagent à peu près la même syntaxe et les mêmes modes.
C'est comme ça qu'on va pouvoir commencer à écrire, en tapant la lettre i qui va nous permettre de passer du mode commande au mode saisie :

$ ed
i
Coucou je peux écrire des trucs
Et hop sur une autre ligne
.

Vous avez vu comment j'ai terminé avec un . ? Ça permet de repasser en mode commande et d'arrêter la saisie.
Là on va pouvoir sélectionner et afficher la dernière ligne saisie avec son numéro en pressant n. Et en mettant un numéro devant la commande n, on peut sélectionner la ligne correspondante :

n
2       Et hop sur une autre ligne
1n
1       Coucou je peux écrire des trucs

Bon je sens que la température de la pièce a augmentée d'au moins 1000%, alors on va enregistrer notre prose et puis on va lever les mains du clavier.
Pour ce faire, vérifiez que vous êtes bien toujours en mode commande, puis tapez l'ordre d'enregistrer en donnant un nom au fichier puis la commande pour quitter :

w fichier.txt
60
q

$

Le petit 60 est là pour nous signifier le nombre de caractères qui se trouvent dans notre fichier.
On va arrêter là, tout va bien. Respirez, vous êtes dans votre espace de bien-être en sécurité. Le tuto est terminé et la conclusion arrive. Regardez elle est juste là.

Conclusion

C'est un peu confus ? Vous en faites pas, de toute manière il y a peu de chances pour que vous ayez à utiliser un tel outil au quotidien. Cependant c'est toujours intéressant, d'après moi, de constater les évolutions en terme d'accessibilité. On imagine difficilement qu'à l'époque cet outil simplifiait la vie pour écrire du texte sur un ordinateur, un programme qui prend si peu de place que t'as même pas besoin de le désinstaller.

J'espère qu'en tout cas, malgré la teneur en argot technique, avoir réussi à vous intéresser un minimum, et promis le prochain sera plus léger à lire !

N'hésitez pas à vous abonner, à mettre un pouce et à activer la cloche, ça me ferait super plaisir. (Nooooooon c'est faux)


PS : Effectivement je n'ai pas parlé de Emacs ¯\(ツ)