Vim
Description
Vim/Neovim est un éditeur de code. Il est utilisé par 1/4 des développeurs de la planète (voir le Stackoverflow dev survey (2024: Vim 21%, Neovim 12%)
Son intérêt principal provient de son mode "commande", qui permet d'effectuer des opérations complexes en un minimum de touches. Il s'agit également d'un des rares éditeurs de code - avec Emacs et VS Code - capable de proposer une édition intelligente (coloration, indentation, complétion, ...) pour la quasi-totalité des langages de programmation.
Son deuxième interêt est le fonctionnement en terminal. Dans l'informatique moderne (Cloud, Centre de Calcul), vous devez modifier du code à distance. Un terminal texte et ssh sont les outils omniprésents.
Pourquoi VIM/Neovim ?
Vim nécessite un temps d'apprentissage important et un "minimum" de
configuration avant d'être utilisable. Neovim permet d'avoir une
configuration de base plus complète et une configuration avancée plus
simple. Il est légitime de se demander pourquoi réapprendre à utiliser
un éditeur de code (taper :w pour sauvegarder alors qu'on est
habitué au CTRL+S peut sembler une perte de temps, à priori).
La réponse est simple : gagner en efficacité. Il est certains que dans vos premières semaines d'utilisation de Vim/Neovim, vous aurez l'impression de mouliner et de perdre du temps à switcher en permanence entre mode commande et édition, mais une fois la dizaine de commandes de base connues, à vous le code productif ! (Des exemples de la puissance de VIM sont disponibles dans la suite...)
De plus : il est tout à fait possible d'utiliser les commandes
"normales" (CTRL+S, CTRL+C/CTRL+V, ...) dans VIM. Ca n'est bien sûr
pas recommandé, mais c'est bien pratique dans les premières semaines
(mois ?) d'utilisation. Un fichier de configuration .vimrc
"n00b-proof" est disponible dans la suite : utilisez-le dans vos
premières semaines en tentant de basculer de plus en plus vers les
commandes de base de VIM...
Vim est également l'un des rares éditeurs à fonctionner aussi bien dans
un shell (comme nano) que dans une interface graphique avancée (via
gvim), ce qui le rend utilisable dans toutes les situations.
Autres avantages de VIM, en vrac : léger, souris fonctionnelle lors
d'une édition en ligne de commande (contrairement à nano ou la plupart
des éditeurs fonctionnant dans un shell), utilisable au sein de la
plupart des grands IDE (eclipse, VS Code, ...), disponible partout (même
quand on pirate un TX en root, c'est dire !), édition de fichier à
distance en ssh, ...
VIM sucks ! VS Code powwwa !
Je vois d'ici les fans de VS Code bondir et me reprocher de faire la pub d'un éditeur antique, sans fonctions de refactoring avancé, sans compilation inline, etc.
C'est oublié que VS Code ne fait rien lui-même. Il utilise les services d'autres logiciels. La plupart de ce que vous voyez est gèré au travers d'un protocole nommé LSP, inventé par Microsoft pour Visual Studio (l'ancètre de VS Code). LSP est un standard ouvert. Neovim parle nativement LSP, donc ces fonctionnalités sont là aussi.
La puissance de VIM ne vient pas du logiciel en lui-même, mais de ses "key bindings" et de son mode commande ! Il est possible d'utiliser ce mode commande dans Visual Studio, Eclipse, Firefox ... avec une configuration ou des plugins adaptés ! Et là c'est le must : non seulement vous êtes dans l'environnement de travail moderne, mais en plus vous utilisez le rapid-tapage productif de Vim. Apprendre les quelques commandes de VIM n'est pas perdu !
Documentation
- La documentation complète de Neovim
- VIM Adventures un tuto pour apprendre vim sous la forme d'un jeu d'aventure. Déplacez le personnage avec les mêmes commandes que pour bouger le curseur dans Vim !
- The Vim book de Steve Oualline est disponible librement ici, en PDF