Introduction à VIM
Connaissez-vous vim ? Cet éditeur de texte en console a fait peur à plus d’un. Néammoins, lorsqu’on le maîtrise bien, on peut faire des prodiges. Sans compter que les commandes très naturelles de vim permettent d’être trèèès feignant. Et “feignant” est un terme mélioratif quand on parle de linuxiens
En tout premier lieu, tapez :
sudo apt-get install vim
Pour vous assurer que vous possédez la version complète et fonctionnelle de vim, et l’installer dans le cas contraire : en effet, certaines distributions n’ont par défaut que vim-tiny installé, une alternative légère à vim, mais moins complète.
Pour ouvrir vim, c’est très simple : ouvrez une console et tapez :
vim fichier
Si le nom de fichier spécifié n’existe pas, vim crée un nouveau document avec ce nom. L’interface paraît un peu déroutante au premier abord :
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
“truc.txt” New File
Les “~” sont simplement là pour indiquer les lignes vides. Maintenant, essayez de taper du texte : ça ne fonctionne pas. Pourquoi ? En fait, il y a trois modes de fonctionnement dans vim :
- Le mode insertion, c’est le mode où vim considère tout ce qu’on tape comme du texte.
- Le mode commande, on y accède en appuyant sur Échap depuis le mode Insertion.
- Le mode “Ex” : on y accède depuis le mode commande en tapant “:”. Une mini-invite de commande s’ouvre
Pour accéder au mode Insertion, il n’y a pas moins de… 6 manières ! Voyons-les en détail :
Tout ça se résume en IiAaOo. En fait, c’est simple :
- Tapez i pour insérér du texte avant le curseur (le plus utilisé). Tapez I (Maj + i) pour placer le curseur au début de la ligne, en mode Insertion.
- Tapez a pour insérer le texte après le curseur. Et A pour faire une insertion à la fin de la ligne.
- Faites o pour ouvrir une nouvelle sous la ligne courante. O sert à en ouvrir une au-dessus de la ligne courante.
N’oubliez d’appuyer sur Échap après chaque insertion, pour revenir en mode commande.
Pour quitter faites :q (mode Ex). Un petit message vous signale que des modifications ont étées opérées et vous invite à taper :q! pour passer outre. Tapez :w pour enregistrer. Pour enregistrer et quitter, faites
.
VIM : Un aperçu de sa puissance sans limites
Peu convaincu ? Vim et moi allons vous clouer le bec.
Dans la section qui suit, les raccourcis présentés doivent êtres tapés en respectant la casse. Par exemple, cW devra être tapé comme suit : c, puis Maj + w.
Ouvrez un fichier quelconque, ou bien créez-en un et remplissez-le un peu, puis repassez en mode commande.
Déplacement dans un fichier
Tout d’abord, la méthode traditionnelle de déplacement dans vim est l’utilisation des touches hjkl : h pour aller à gauche, l pour la droite, j pour le bas et enfin k pour le haut. Les touches fléchées marchent aussi bien, à vous de voir.
Plus puissant : ^ et Espace (à la suite) positionne le curseur au début de la ligne. $ le place à la fin. Pour vous rendre à la première ligne utilisez H, et tapez L pour vous rendre à la fin. M vous place au milieu du fichier. Ces trois commandes peuvent être réunient en une seule : G. Utilisée seule, elle vous mène à la fin. Tapez 1G pour aller à la fin. Mieux : 3G vous mènera à la 3ème ligne du texte par exemple.
Passez au mot suivant avec w :
Avant :
Papa Noël est là !
Après :
Papa Noël est là !
Mais… que se passe-t-il ? Si on prend un mot entouré de <> par exemple, voilà le problème :
Avant :
<Papa> Noël est là !
Après :
En effet, vim considère ce genre de mots commes des “grands” mots. La solution ? Utiliser W (en majuscule cette fois). b et B font la même chose que w et W, mais ils servent à passer au mot précédent. Dans le même genre, e et E placent votre curseur à la fin du mot courant, “petit” ou “grand”.
Ctrl + u vous mènera 1/2 page plus haut. Ctrl + d, 1/2 page plus bas. Quant à Ctrl + b et Ctrl + f, il servent respectivement à reculer et à avancer d’une page.
Les marqueurs
Une des fonctionnalités les plus utiles de vim : elle vous permet de “marquer” un endroit de la page, puis d’y revenir en temps voulu.
Pour marquer un endroit, en mode commande toujours, tapez m suivi du nom de votre marqueur : il doit faire un seul caractère, chiffre ou lettre (majuscule ou minuscule). mK par exemple.
Pour accéder à ce marqueur K, taper ‘K (‘ = la touche 4).
Modifications
Pour éditer le mot courant, appuyez sur cw. Cette commande très utile supprime tout depuis le curseur jusqu’à la fin du mot et passe en mode Insertion. cW fera la même chose pour les “grands” mots et cc sert pour éditer la ligne courante (cette fois-ci toute la ligne est effacée). La commande C, en revanche, fait comme cw, mais pour la ligne : elle efface ce qu’il y a après le curseur.
s est un équivalent à tout cela, mais sert pour les caractères, utilisez-la pour remplacer le caractère sous le curseur par le texte que vous tapez après s.
On peut parfois avoir besoin de joindre une ligne à celle du dessous : pour cela, placez vous sur la première et tapez J.
Effacement
Tapez simplement x pour effacer le caractère sous le curseur, et X pour celui avant le curseur. dw vous efface le mot sous le curseur, bien sûr accompagné de dW, vous en aurez compris l’usage je pense. db efface le mot qui précède le mot courant. Il existe aussi, devinez quoi… dB bien sûr ! dd efface la ligne courante. D, quant à lui, efface depuis le curseur jusqu’au retour à la ligne.
Note : La commande 3dd effacerait la ligne courante et les deux suivantes. Cela vaut aussi pour dw et db.
Copie/Collage
yw copie le mot courant dans le “buffer” (l’espace de copie). J’imagine qu’il est inutile de vous dire qu’il existe aussi yW ? Ah zut, trop tard. Bien sûr il y a yb (et yB). yy sert pour les lignes entières. Comme d’habitude, 20yy vous copiera 20 lignes, etc… (je me montre bref, mais je pense que vous aurez compris le principe intuitif des commandes vim).
Vous pouvez avoir de nombreux “buffers” de travail. Vous pouvez même les nommer. Tapez “, puis, comme pour les marqueurs, le nom du buffer en un caractère, puis le critère de copie. Par exemple, la suite de commandes “a2yy copie la ligne courante et la suivante dans le buffer nommé “a”.
Et pour “coller” ? Tapez simplement p pour restaurer le buffer classique, et “ap pour restaurer le buffer “a” (remplacez a par votre nom de buffer). p permet de coller en-dessous de la ligne courante, mais pour coller au-dessus, utilisez P (ou bien “aP).
Recherche et remplacement
Pour rechercher un texte à l’intérieur d’un gros fichier, entrez /, puis les termes de votre recherche. Appuyez sur Entrée. Le curseur est alors placé à la première occurence trouvée. Pour passer à l’occurence suivante, pressez n. Pour aller à l’occurence précédente, tapez N. Pour rechercher un caractère dans une ligne, tapez plutôt f suivi du caractère à rechercher (il faut être dans la ligne concernée). Le curseur se place dessus. Recommencez l’opération pour trouver le caractère suivant.
Exemple d’une recherche:
Il est des nôôôtres !
Il a bu son verre comme les auuutres !
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
Je tape / et j’entre ma recherche :
Il est des nôôôtres !
Il a bu son verre comme les auuutres !
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
/tres !
J’appuie sur Entrée. Le curseur se postionne au début de la première occurence :
Il est des nôôôtres !
Il a bu son verre comme les auuutres !
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
/tres !
Si j’appuie sur n, il va à la suivante :
Il est des nôôôtres !
Il a bu son verre comme les auuutres !
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
/tres !
Remarquez que si vous appuyez à nouveau sur n, vim revient à la première occurence, en vous en avertissant au passage, bien proprement :
Il est des nôôôtres !
Il a bu son verre comme les auuutres !
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
La recherche a atteint le BAS, et continue en HAUT
Reste la substitution : passez en mode Ex (:) et suivez ce modèle :
%s/terme à remplacer/terme de remplacement/g
Ceci remplacera toutes les occurences de terme à remplacer par terme de remplacement. Pour répéter une substitution, tapez &.
Dialogue avec le système
Vim est un éditeur entièrement intégré au shell. Il peut donc utiliser le système en même temps qu’il édite vos fichiers.
Vim vous permet par exemple d’ouvrir un shell “temporaire”, ce qui peut être très utile lorsque vous avez une opération à faire mais que vous ne désirez pas enregistrez et quitter, puis revenir.
Tapez :sh (en mode Ex donc), faites un peu joujou avec votre sytsème, puis tapez exit dans l’invite de commande pour revenir à vos oignons.
Quoi que vous ayez fait, votre fichier est resté le même. Si vous avez une seule commande à éxécuter, faites-le sans ouvrir un shell avec :! commande à éxécuter. Là non plus, votre fichier ne sera pas modifié.
Et là, le top du top, le must du must, the last but not the least : vous pouvez intégrer le résultat d’une commande dans votre fichier actuel !
Faites juste :r !commande. Par exemple :r !ls ~ listera l’intérieur votre répertoire home directement dans votre fichier ! Cet exemple ne sert potentiellement à rien, mais imaginez tout ce que vous pouvez faire avec cette clé en main ! Ça, c’est la puissance.
Autres
Pour annuler un changement, tapez u. Pour répéter un changement, faites simplement “.“
Une commande utile pour les programmeurs : insérez deux carctères ( et ) ou bien et ou encore { et }, mettez 2-3 lignes entre les deux. Puis positionnez-vous sur l’une des deux délimitations et tapez % : le curseur saute à la délimitation opposée !
Pour les programmeurs toujours, l’indentation en mode commande : indenter une ligne avec >> et la désindenter avec <<.
Naviguer dans une liste d’arguments
Vous savez, je ne vous ai pas tout dit au début de cet article : en fait, on peut aussi “invoquer” vim en tapant :
vim fichier1 fichier2 etc…
Avec ça, une liste d’arguments sera créée. Le fichier en tête de cette liste (fichier1 dans notre exemple) s’ouvre. Pour passer au suivant il suffit de faire :n, et :N pour passer au précédent.
Vous pouvez aussi vous rendre directement dans un fichier en tapant :e fichier. Moins utilisé, :rew permet de revenir au début de la liste.
Les abréviations
Une abréviation est quelque chose d’assez utile pour gagner du temps : définissez une abréviation comme ceci : :ab raccourci mot_complet. Dans notre exemple, on va en mode Insertion, on tape “raccourci”, on appuie sur Espace… et on admire
Pour les programmeurs
Amis programmeurs, vim vous propose… quelques milliers de fonctionnalités très utiles. Je n’en détaillerai que quelques unes (pas fou) :
Tout d’abord, créez un fichier .vimrc dans votre répertoire home. Puis remplissez-le en fonction de ce qui suit.
Indentation automatique
Créez la ligne “set autoindent” (sans les guillements) dans votre fichier, puis enregistrez-le. Maintenant ouvrez vim. Essayez d’indenter… Pratique !
Coloration syntaxique
Le must des programmeurs ! Marquez “syntax on” dans votre fichier. Puis ouvrez un fichier doté de l’extension qui vous convient (pour colorer le C++ par exemple, ouvrer un fichier .cpp).
Code folding
Écrivez ces 2 lignes dans votre fichier :
set foldmethod=syntax
set foldcolumn=4
Ouvrez un fichier avec une extension appropriée, puis écrivez un bout de code, comme un if. Mettez le curseur à l’intérieur du if (pas dans la 1ère ligne) et faites zc en mode commande : vous voyez ? Pour réouvrir, faites zo. Enfin, vous pouvez tout fermer avec zM et tout ouvrir avec zR
Conclusion
Vous le croirez ou non, mais ce long article n’était qu’une mise en bouche. Pour tout savoir, je vous recommande de tout coeur la documentation : suivez les instructions de ce site pour installer la doc en français. Vous pourrez y accéder via :help. Tout y est, absolument tout, des bases jusqu’aux trucs de pro.
Sur ce, bonne continuation !








