Compilation, installation et utilisation basique de vim 8 – Partie 2/2

2.2 Commandes du mode normal

Tout d’abord voyons quelques commandes que l’on peut utiliser directement dans ce mode : dd permet de couper une ligne et la place dans le tampon par défaut (D en majuscule permet de supprimer depuis le curseur jusqu’à la fin de la ligne). yy permet de copier une ligne et la place également dans le tampon par défaut. x permet de supprimer un caractère de la ligne (x ne supprimera pas au-delà d’une ligne même en lui indiquant un plus grand nombre de caractères).

Pour insérer le tampon par défaut sur la ligne se trouvant en dessous de celle du curseur utilisez p (pour « paste »). P en majuscule permet d’insérer la ligne au-dessus de celle où se trouve le curseur.

La force de Vim est d’avoir des commandes combinables qui s’exécuteront avec une sorte de condition. Sans entrer dans les détails on peut déjà faire beaucoup avec quatre commandes (que l’on a pratiquement déjà vues) : d pour détruire le texte (l’effacer, le couper), c pour changer le texte (cette commande change le mode et passe en mode d’édition) et y pour « yank » qui permet de copier du texte et enfin v pour sélectionner en mode visuel (cette dernière commande change également le mode et passe en mode visuel). À l’exception de la commande v qui passera simplement en mode visuel, on ne peut utiliser ces commandes sans leur adjoindre des caractères qui définiront une « étendue ».

Les « étendues » sont au minimum la combinaison de deux caractères. Le premier définit la condition ou la façon d’appliquer la commande et le deuxième caractère indique sur quoi s’applique la commande. Pour le premier caractère il existe trois conditions/façons : a pour « all » (tout), i pour « in » (à l’intérieur), t pour « ’til » ou « until » (jusqu’à). Le deuxième caractère est soit l’un des caractères de déplacement vu précédemment soit un caractère de la ligne de texte sur laquelle est le curseur. Toutes les combinaisons ne sont pas forcément admises mais il est possible d’écrire par exemple : diw qui supprime le mot entier (si on avait écrit dw seule la fin du mot aurait été supprimée), ca) coupe tout ce qui est entre les parenthèses, y compris les parenthèses et passe en mode d’édition, yi] copie tout ce qui se trouve entre les crochets, sans les crochets, vt’ (sélectionne tout jusqu’au prochain caractère sur la ligne et passe en mode visuel.

Pour passer en mode d’édition, un certain nombre de commandes peuvent être utilisées. Les commandes les plus usitées sont i et I (i en majuscule) qui permettent d’insérer du texte respectivement avant la position du curseur et au début de la ligne et les commandes a et A qui permettent respectivement d’ajouter du texte après la position du curseur ou à la fin de la ligne. Une fois en mode d’édition, il est possible de taper n’importe quel caractère (n’oubliez pas la touche <Esc> qui permet de retourner en mode normal).

Pour répéter la dernière commande, il est parfois possible d’utiliser la commande . (point).

v, V, <Ctrl> + <V> sont les commandes qui permettent de passer en mode visuel. v en minuscule permet de sélectionner le texte au caractère prêt. V en majuscule permet de sélectionner visuellement des lignes entières et enfin <Ctrl> + <V> permet de sélectionner un bloc de texte.

2.3 Le mode visuel

Dans ce mode, une fois la sélection effectuée, il est possible d’utiliser directement les commandes d, D, c et y vues précédemment. Le mode de sélection par bloc (<Ctrl> + <V>) permet, avec l’utilisation de la commande I (i en majuscule) de modifier n’importe laquelle des colonnes sélectionnées. Par exemple, sur un script bash, commenter les 3 paragraphes suivants le curseur en tapant <Ctrl> + <V> 3}I # et <Esc>. Le travail par colonnes avec <Ctrl> + <V> et le mode de sélection par lignes avec V (pour copier des fonctions ou des portions de code) sont pour le moment les deux seules utilisations que j’ai du mode visuel.

2.4 Le mode « command line »

Pour utiliser des commandes dans ce mode il faut en premier lieu taper le caractère : qui permet l’entrée dans le mode. Dans ce mode il est possible de sauvegarder (:w – enregistre en écrasant le fichier), de quitter (:q – quitte sauf s’il persiste des modifications ; dans ce cas, pour quitter en perdant les modifications on peut ajouter le point d’exclamation ainsi :q!), d’ajouter un fichier à la ligne suivante (:r nomdufichier), d’éditer un autre fichier (:e nomdufichier). Comme dans le mode normal, il est possible parfois de combiner les commandes et l’on pourra écrire :wq pour enregistrer et quitter Vim. Toutefois les puristes utiliseront 😡 qui permet d’enregistrer les modifications, seulement s’il y en a, de chacun des fichiers éventuellement ouverts et qui a le bon goût d’être plus court à taper !

Après avoir tapé le : vous pouvez utiliser les flèches de votre clavier pour naviguer dans l’historique des commandes déjà utilisées. Vous pouvez également taper :hist (un raccourci pour :history) pour obtenir l’historique des commandes tapées dans le mode command line.

2.5 Défaire et refaire

Vim possède quelques commandes intéressantes permettant de défaire ou refaire ce que vous venez de modifier. Tout d’abord tant que l’on reste en mode d’édition on effectue un et un seul changement (même si l’on édite totalement l’ensemble du texte). En effet l’ensemble d’un changement est clôt dès que l’on quitte le mode d’édition. Chaque commande dans le mode normal introduit un changement. Chacun des changements est réversible, en mode normal grâce à la commande u (pour undo), en mode command-line grâce à la commande :earlier. La commande <Ctrl> + <r> en mode normal et :later en mode command-line permettent de refaire ce qui vient d’être défait. L’intérêt des commandes :earlier et :later est qu’il est possible de leur indiquer soit un nombre de modifications à faire ou défaire, soit un laps de temps. Par exemple, pour retrouver l’état de votre fichier 1 heure auparavant il est possible d’écrire :earlier 1h.

Conclusion

Vous avez maintenant un Vim tout neuf sur votre système. Vim est activement développé aussi, entre l’écriture de ces quelques lignes et leur date de parution, un grand nombre de correctifs et ajouts auront été écrits.

Cet article, un peu rébarbatif, est un bon début pour commencer à pratiquer. À mon avis il est illusoire de penser que l’on peut apprendre (et retenir) un si grand nombre de modes et de commandes en quelques jours. Seuls la pratique régulière et l’apprentissage au fil de l’eau sur plusieurs semaines permettent d’ancrer dans vos doigts les commandes qui vous sont utiles. Pour vous aider, vous pouvez utiliser une fiche (Cheat Sheet) [5] qui vous servira de référence.

Parfois, avoir une personne à qui parler pour commencer à utiliser Vim peu aussi aider. Pour cela vous pouvez vous rapprocher de votre GUL (Groupe d’Utilisateurs de Linux) local [6]. Il organise probablement des sessions tuppervim [7] comme par exemple l’ALDIL [8] à Lyon.

Nous pourrons éventuellement voir dans de prochains articles le système de tampons, le système de macro particulièrement simple à utiliser, comment lui adjoindre des plugins et probablement bien d’autres choses encore !

Olivier Delhomme
[Développeur de logiciels libres pour mon loisir]

Références

[1] Définition d’un environnement de développement intégré : https://fr.wikipedia.org/wiki/Environnement_de_développement
[2] Le dépôt git de Vim : https://github.com/vim/vim.git
[3] Le dépôt mercurial de Vim : https://bitbucket.org/vim-mirror/vim
[4] Pourquoi <h>, <j>, <k>, <l> pour se déplacer : http://xahlee.info/kbd/keyboard_hardware_and_key_choices.html
[5] Une fiche de référence : https://www.fprintf.net/vimCheatSheet.html
[6] Liste des GUL : https://aful.org/gul/liste
[7] Événement tuppervim à Paris http://tuppervim.org/
[8] LE GUL Lyonnais : http://aldil.org/

Retrouvez cet article (et bien d’autres) dans GNU/Linux Magazine n°200, disponible sur la boutique et sur la plateforme de lecture en ligne Connect !