J'utilise l'éditeur de texte Acme pour programmer. Beaucoup de choses ont déjà été écrites dessus, pour avoir une idée de ce que c'est et comment il marche le mieux reste de voir la page de l'un de ses utilisateurs les plus avertis. Le reste de cette page part du principe que vous avez une petite connaissance de comment Acme fonctionne
https://research.swtch.com/acme
Ce que j'aime le plus c'est que c'est un éditeur qui est fait pour fonctionner *dans* un unix, et non pas *par-dessus*. Les fonctionnalités d'Acme ne viennent pas de son code, mais de sa capacité à se combiner avec d'autres outils de l'OS sur lequel il tourne, et de proposer une intégration avancée. Par exemple la "barre d'outils" est éditable: on peut changer le texte du nom, utiliser le nom d'un autre fichier et exécuter un "Get", ça mettra à jour le contenu de la fenêtre avec le contenu du fichier en question. L'exécution se fait avec un clic milieu, ou "clic 2".
La navigation par défaut est la suivante: lorsqu'un dossier est ouvert dans une fenêtre, les fichiers et dossiers à l'intérieur sont listés. Un clic droit (ou "clic 3") sur un fichier/dossier l'ouvrira dans une autre fenêtre. Ça peut vite être lourd quand la hiérarchie est un peu trop compliquée. J'ai donc mis au point un outil qui s'inspire de fzf: l'ensemble des fichiers est récursivement listée et affichée (tronquée à 100 pour ne pas inonder la fenêtre inutilement). Une fois la liste affichée on peut chercher dedans avec les capacités natives de Acme (un clic 3 sur une sélection cherche les occurences de cette sélection dans la fenêtre si ce n'est pas un fichier), mais Fza permet aussi de lui donner une chaîne de caractères qui filtrera l'entrée pour n'afficher que ce qui correspond.
https://godocs.io/git.sr.ht/~rakoo/acme-tools/Fza
Fza tourne par défaut avec "find" et équivalent, mais n'importe quelle commande qui listera des entrées ligne par ligne est utilisable: Fza y est agnostique. Composition !
J'ai donc créé un script très simple qui liste tous les fichiers lisibles (c'est-à-dire dont le type mime contient "text") et les affiche ligne par ligne en préfixant chaque ligne du nom de fichier et du numéro de la ligne. Le filtre me permet ensuite de chercher directement ce que je veux. Avec le numéro de ligne un clic 3 ouvre directement le fichier à la bonne ligne
https://git.sr.ht/~rakoo/acme-tools/tree/master/item/lines.rc
J'adore cet éditeur