Accueil ⇒ Informatique ⇒ Outils ⇒ VIM

VIM

Introduction

L'editeur VIM, extension du sensationnel VI, est trop souvent dédaigné au profit d'Emacs ou de Kate. Cette remarque concerne surtout les développeurs, bien que cela puisse être extensible à tous les utilisateurs. Je rappelle que VIM est disponnible d'office sur la plupart des sytèmes libres, ce qui n'est pas toujours le cas d'autres éditeurs. Ce tutorial permettra aussi bien de servir d'apprentissage rapide au maniement de l'éditeur que d'aide-mémoire.

Les commandes sont rédigées entre guillemets simples ' ' et doivent être exécutées en-dehors de tout autre mode.

Précision : cet article a été rédigé il y a fort longtemps et n'a pas été remanié depuis. N'hésitez pas à proposer des corrections éventuelles.

Hello VIM !!!

Nous n'aborderons pas l'installation de l'éditeur ici, celui-ci étant souvent présent par défaut sur la plupart des systèmes. Ce qui surprend dès le premier lancement est également ce qui choque les utilisateurs néophytes et les fait renoncer sans même essayer plus avant : le texte tapé n'est pas inséré directement. Cela est dû au fonctionnement même de l'éditeur, qui une fois maîtrisé est extrèmement pratique et puissant.

vim hello.vim.txt

Utilisez la commande ci-dessus pour ouvrir un premier fichier texte. Que vous soyez en mode terminal ou que le serveur X soit lancé, VIM s'exécute dans le shell. Il existe des interfaces graphiques plus ergonomiques, comme gVIM, mais nous ne les aborderons pas ici. Vous remarquez donc que, si vous tapez du texte directement, l'éditeur exécute toute une série d'opérations obscures. Pourquoi ? VIM fonctionne par procédures, activées par combinaison de touches ou par appel de la commande associée : si vous tapez 'i', et qu'après vous tapez votre texte, vous remarquerez que celui-ci est bel et bien inséré au curseur.

I signifie INSERT ; ainsi, taper 'i' permet d'insérer du texte. Quand vous avez terminé, appuyez sur la touche [ECHAP]. Ceci n'est qu'un exemple de "touche bloquante", il en existe bien d'autres. Les plus utiles sont 'a', pour APPEND (ajouter), identique à 'i' si ce n'est que le texte est inséré après le caractère courrant. Comme on peut s'en douter, la touche [SUPPR] supprime le caractère courrant ('x' fonctionne aussi). Très utile, 'u' fait offiche de UNDO. La liste suivante récapitule les principales touches et commandes à accès direct utiles :

Cette manière d'appeller les procédures de l'éditeur est la plus pratique, c'est pourquoi les commandes associées sont les plus courrantes. A noter que l'éditeur, à l'instar d'emacs par exemple, fonctionne par buffers ; nous aborderons plus loin les procédures associées à leur utilisation.

Commandes de l'éditeur

Les commandes de l'éditeur ne se résument pas aux à celles vues plus haut. Si vous tapez ':', vous remarquerez qu'une ligne précédée de ":" apparait en bas de la fenêtre. C'est de cette manière que vous pourrez appeler la plupart des procédures de l'éditeur. Bien entendu, la première commande à utiliser avant même d'enregistrer un fichier est la commande ':help'. Les plus courrantes sont ':w' (WRITE), pour écrire le fichier courrant, et ':q' (QUIT), pour fermer le fichier (buffer) en cours d'édition.

A noter que vous pouvez sauvegarder et fermer le fichier en une seule commande : ':wq', ou fermer le fichier sans sauvegarder en utilisant la commande ':q' suivie du suffixe !. Comme vous pouvez le constater, certaines commandes de l'éditeur peuvent être concaténées : enregistrer le fichier (w) et le fermer (q) peut se concaténer en une seule commande ':wq'. Ajoutez à cela le suffixe 'a', qui signifie ALL, et vous comprendrez que la commande ':wqa' enregistre et ferme tous les fichiers en cours d'édition (à noter que le suffixe 'a' n'a rien à voir avec la touche bloquante). Cette particularité ne s'applique pas à toutes les procédures existantes.

Autres commandes utiles

Comme nous sommes des codeurs acharnés et/ou des administrateurs systèmes méticuleux, la coloration syntaxique est un confort qu'on est en droit d'exiger d'un bon éditeur : à ce niveau là, VIM est très bien fourni, la plupart des syntaxes existantes étant supportées. La coloration s'active très simplement grâce à la commande ':syn', dont le premier argument (on|off) indique si l'on souhaite activer ou non cette coloration.

Il est égalemment possible d'insérer le contenu d'un fichier directement dans le buffer courrant. Cela se fait tout simplement via la commande ':r fichier', ou "fichier" est le nom du fichier. Attention : vérifiez que le fichier existe avant d'exécuter cette commande. Nous verrons plus loin comment exécuter des procédures shell directement depuis l'éditeur pour s'en assurer.

Exécuter une commande shell

Exécuter une commande shell est simplissime : il suffit d'utiliser le préfixe ':!', suivi de la commande elle-même. Par exemple, pour lister le contenu d'un répertoire, la commande suivante suffit (en couleur s'il vous plait :P). Nous n'entrerons pas dans les détails des commandes shell, elles font l'objet d'un cours à part entière.

:!ls -laF --color=auto ./

Recherche dans un fichier

Cette méthode de recherche rapide s'applique aussi bien à VIM qu'à Mozilla. Il s'agit d'un appel un peu particulier : il débute par les caractères '/' (slash) ou '?', au lieu de ':', suivi sans espace du terme à rechercher. Le slash signifie que l'on effectue la recherche du début à la fin du buffer, le point d'interrogation signifiant l'inverse. Ainsi, pour rechercher le mot "foo" dans un fichier, il suffit de taper les commandes qui suivent :

Le caractère courrant sera positionné au début du mot, et il suffit de taper 'n' pour passer à la prochaine occurence du mot. La combinaison 'N' (Shift+'n') permet de poursuivre la recherche dans l'autre sens. Cet accès direct aux fonctions de recherche est particulièrement pratique pour trouver rapidement un mot du buffer, et il évite d'enchaîner des combinaisons plus complexes.

Expressions rationnelles

De même que pour la recherche, il existe une fonction REMPLACER de l'éditeur accessible directement. Son utilisation passe par des expressions rationnelles, similaires au Perl. Pour ceux qui ne connaissent pas les expressions rationnelles, il suffit de considérer cette fonction comme un patron : celui-ci débute par la commande de remplacement (':s', ':%s' ou ':#,#s' en fonction de la portée de recherche), suivie d'un slash. Vient ensuite le mot à remplacer, lui-aussi suivi d'un slash, et le mot remplaçant, suivi d'un dernier slash. La lettre 'g' vient compléter l'expression, qui ne comporte pas d'espace en-dehors des termes entre slash. Les commandes suivantes permettent ainsi de remplacer toutes les occurences de "old" par "new" dans le buffer courrant :

The End

Bien entendu, VIM n'est pas sans faille, et certains lui reprochent même son "austérité", mais il n'empêche qu'il s'agit d'un excellent outil, très répendu et utile en toutes conditions. Ce tutorial vous aura, nous l'espérons, permi de découvrir quelques rouages essentiels de VIM, et peut-être motivé à l'utiliser d'avantage. Nous vous conseillons de consulter l'excellent tutorial proposé avec l'éditeur, la plupart du temps disponnible via la commande suivante (en français).

vimtutor fr