Emacs
Emacs est un éditeur de texte multiplateforme qui permet de créer, d'éditer et de traiter presque tous types de documents texte au travers de très nombreux modes d'édition : développement dans plusieurs langages (coloration syntaxique, édition dirigée par la syntaxe en C, Perl, Python, HTML, SGML, XML, TeX/LaTeX et des dizaines d'autres), mais aussi le shell (et ses commandes), la lecture/écriture de mail/news, agenda, voire navigation web. Il a une très longue histoire (premières versions vers 1985). Il en existe même plusieurs déclinaisons, les principales étant gnuemacs et XEmacs.
Il est conçu à partir d'un interpréteur Lisp (elisp pour Emacs LISP) qui lui permet d'être très facilement programmable donc :
- d'être facilement paramétrable et donc personnalisable (le fichier de configuration étant un simple fichier texte) ;
- de pouvoir réaliser des tâches complexes en mode non interactif ;
- d'enregistrer puis d'automatiser des traitements répétitifs (macros).
Comme son concurrent direct Vim, il possède les fonctions habituelles d'un éditeur de texte comme :
- multi-fenêtrage, multi-fichiers ;
- auto-complétion et auto-indentation ;
- comparaison visuelle de 2 fichiers ;
- coloration syntaxique ;
- replis de portion de texte ;
- recherche et substitution de texte par expressions régulières ;
- possibilité de définir des abréviations ;
- système de plugins ;
- fonction défaire/refaire multi-niveau ;
- correction orthographique.
Bien qu'ayant des objectifs multiples, il ne peut être utilisé comme traitement de texte WYSIWYG, mais il contient de nombreux outils permettant de réaliser de l'édition de texte sophistiquée (qui ont été ensuite inclus dans d'autres outils) comme par exemple :
- Le "chercher/remplacer" par expressions rationnelles (query-replace-regexp ) ;
- Le "chercher/remplacer" dans une multitude de fichiers (tags-query-replace) ;
- La "sélection rectangulaire" (kill-rectangle) ;
- La lecture de courrier électronique (gnus ou rmail) ;
- L'édition de fichiers à distance via un protocole réseau (ftp, ssh, etc via le mode tramp ou ange-ftp) ;
- Il permet de faire le lien entre un débogueur (gdb) et le code source (C ou C++) en cours d'édition.
Il contient plusieurs milliers de fonctions qu'il n'est pas possible d'énumérer.
Il est néanmoins auto-documenté (info-mode) ce qui permet de consulter la documentation en même temps qu'on l'utilise.
De nombreuses fonctions (appelé un mode) peuvent lui être ajoutées comme par exemple :
- Org-mode est un mode emacs plutôt récent qui permet la prise de note, la gestion de TODO list, la planification de projets, le suivi de son agenda et pouvant servir comme outil pour la méthode GTD (http://orgmode.org/) ;
- Anything rajoute une fonction de recherche globale (http://www.emacswiki.org/emacs/Anything).
Beaucoup d'extensions peuvent être installées de façon semi-automatique avec ELPA (http://tromey.com/elpa/).
Emacs permet de manipuler des fichiers texte donc sans format particulier. Il faut noter qu'il sait correctement traiter tous les codages de caractères (ASCII, latin-1, Unicode, etc) et possède des fonctions complexes de transformation d'un codage vers un autre.
Édition de sources Fortran/C/C++/Python et LaTeX.
À cause de sa longue histoire, qui remonte avant l'invention des interfaces graphiques, Emacs propose des modes de fonctionnements qu'un utilisateur débutant peut trouver rebutant :
- l'interaction avec l'utilisateur passe essentiellement par le clavier (avec des combinaisons de touches qui peuvent sembler complexes mais qui sont très cohérentes en interne) ;
- des notions de base comme le copier-coller ont des fonctionnement plus complexes que sous d'autres environnements ;
- son apprentissage est assez lent, car il contient un grand nombre de fonctions (20 ans après mes débuts, il m'arrive de découvrir de nouvelles fonctionnalités).
À noter qu'il fonctionne aussi bien en mode graphique qu'en mode console, ce qui permet de l'utiliser à distance sur des machines sans écran.
Pour ces raisons, il déclenche chez les utilisateurs un amour ou une haine violente : http://fr.wikipedia.org/wiki/Guerre_d%27%C3%A9diteurs