Introduction quelque peu avancée à Vim

Gazette Linux n°152 — Juillet 2008

Pranesh Srinivasan

Adaptation française : Deny

Relecture de la version française : Éric Deschamps

Article paru dans le n°151 de la Gazette Linux de juillet 2008.

Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.


Table des matières

Qu'est-ce c'est ?
À qui cela s'adresse-t'il ?
Pourquoi existe-t-il ?
Quelques notations
Au cas où
l'art de l'insertion
Le mode visuel
Annuler et Rétablir
Copier, effacer, coller
Mnémoniques
Les commandes mnémoniques qui sont soumises aux objets texte
Nombres préfixes
Navigation légèrement avancée
Navigation simple sur une ligne
Les commandes g
Balises mnémoniques
Se déplacer vers une ligne
Navigation écran par écran
Les combinaisons de touches
Rechercher et remplacer
Techniques de navigation utiles pour les programmeurs
Replis
Replis imbriqués
Sélections en mode visuel
Filtres
Compilations de programmes
Utiliser plusieurs fichiers
Gestionnaire de fichiers avec Vim
Associer des commandes et leurs abréviations
Macros
Complétion
Correction orthographique
Paramètres courants
Options
Commandes diverses
Extensions utiles
Astuces finales

Qu'est-ce c'est ?

« Ce sont les petites choses qui font les grands hommes »

Cette introduction est consacrée aux petites choses. Des choses qui aident à soulager les tâches quotidiennes mais qui vous prennent du temps avant de devenir un meilleur utilisateur, rédacteur, programmeur—un meilleur utilisateur d'ordinateur.

Cet article commence comme un exercice « d'apprentissage par la pratique » pendant la lecture d'un tutoriel vim. Pendant que je l'écrivais, j'ai estimé qu'avec un peu plus de travail et quelques finitions, on pouvait transformer ceci en une sorte d'introduction à vim.

À qui cela s'adresse-t'il ?

Il ne s'agit pas d'une introduction de cinq minutes à vim à l'usage d'un débutant complet. Je suppose que vous avez déjà utilisé vim et que vous savez vous déplacer et faire des modifications. Bien que :vimtutor ne soit pas nécessaire pour ce tutoriel, je le recommande vivement.

Ce document contient certains dispositifs mnémotechniques et certains aspects légèrement avancés de vim qui peuvent aider l'utilisateur ou le programmeur moyen de vim à accroître sa productivité par petits bonds.

Pourquoi existe-t-il ?

J'ai dans mon entourage un certain nombre de personnes qui ont utilisé vim quelquefois pour écrire des programmes. Très peu d'entre eux sont devenus des utilisateurs de vim accomplis. La majorité abandonne en raison de son interface intimidante de prime abord. Un grand nombre des utilisateurs en question changent pour emacs, parce qu'ils pensent que vim ici n'est simplement pas assez puissant. Je ne dis pas qu'emacs est mauvais, mais je ne peux accepter des décisions fondées sur un manque d'information.

Ce document est écrit dans le but de convertir l'ancien utilisateur de type « J'utilise juste vim via ssh » en véritable utilisateur et pour illustrer les possibilités de vim.

Et le plus important, c'est que vim n'est pas réservé aux programmeurs ; il peut être utilisé par quiconque et par tous ceux qui ont recours à du texte sous toute ses formes. Vim s'exécute sur nombre de plate-formes comme Mac, Windows, Solaris et c'est un standard sous Linux. Un jour, vous pourriez vous retrouvez assis devant un terminal avec seulement vim installé.

Quelques notations

Toute commande mentionnée ici doit être saisie en mode normal. Le mode normal est celui qu'on obtient quand on appuie sur Esc dans vim. Il y a trois modes principaux dans vim : insertion, normal et visuel (la documentation de vim note qu'il y a six modes de BASE et cinq modes supplémentaires ...)

Les commandes sont généralement indentées en respectant le reste du texte. Toute commande commençant par un « : » doit également être saisie en mode normal, avec les deux points. Évidemment, elle doit se terminer par un Enter ou un retour chariot.

Au cas où une commande devrait être saisie en mode visuel, on le mentionnera explicitement.

Les commandes décrites ici devraient fonctionner avec n'importe quelle version récente de vim, ou gvim. J'ai utilisé vim 7.0 à cet effet, et certaines fonctionnalités telles que l'omni-completion et le contrôle orthographique ne sont disponibles qu'avec cette version. Si plusieurs commandes dans ce document ne fonctionnent pas, vous devriez essayer :set nocompatible suivi par un retour chariot ou Enter dans votre vim

Au cas où

Si vous débutez avec vim, ou si vous avez complètement oublié les commandes vim, et que vous vous avez conservé votre motivation pour lire ce document, je ne vous laisserai pas tomber. Voici un tutoriel de cinq minutes.

Saisissez vim suivi d'un nom de fichier dans votre terminal afin de lancer vim :



	$ vim filename
	# Ou, pour une interface graphique :
	$ gvim filename

Cela lance vim dans le répertoire courant (configuration par défaut de vim).

Vous pouvez quitter en tapant :


	:q
	# Ou, pour le mode terminer sans enregistrer :
	:q!

Une fois dans vim, vous pouvez vous déplacer en utilisant h, j, k et l.

        h - gauche
j - bas
k - haut
l - droit

Essayez d'éviter d'employer les touches de déplacement. Ces touches ont été choisies parce qu'elles sont des touches de repère. Elles font gagner à l'utilisateur beaucoup de temps et elles évitent un tâtonnement inutile avec les touches de déplacement du curseur. Après que vous vous y soyez accoutumés, vous détesterez utiliser les touches de déplacement du curseur dans d'autres éditeurs de texte.

Pour insérer du texte à un emplacement, saisissez i. Ceci vous placera en mode insertion. Vous devriez voir en bas à gauche de votre écran quelque chose comme :

        -- INSERTION --
 

Je suppose que l'option showmode a été définie. Si vous ne voyez pas ce qui précède et que souhaiteriez le voir, ajoutez set showmode à votre fichier ~/.vimrc

 
 --Ben

Saisissez du texte jusqu'à ce que vous ayez fini. Utilisez la touche de retour en arrière si nécessaire. Évitez d'employer la touche supprimer et les touches de déplacement du curseur. Si vous avez fini ou que vous pensez devoir vous déplacer ailleurs, saisissez ESC. La combinaison Ctrl+[ devrait être équivalente, mais je ne vous la recommande pas, puisqu'elle n'est présente que pour la compatibilité avec des machines anciennes qui n'ont pas de touche Esc.

Vous êtes à présent de nouveau en mode normal. Vous pouvez vous déplacer de nouveau avec h, j, k, l, en prenant le temps de vous familiariser avec ces déplacements. Cela devrait suffire.

Enregistrez et quittez avec :

	

:w suivi de :q
ou simplement :wq

Et c'est parti !

l'art de l'insertion

Des personnes de mon entourage me disent souvent que la majeure difficulté avec un éditeur de texte important tel que vim, est qu'elles ne savent jamais dans quel mode elles sont.

Si vous faites partie de celles-ci, la réponse est assez simple. vim n'a pas été conçu pour être utilisé de la façon dont vous l'utilisez. Vim a été conçu pour de courtes séquences d'insertion. Vim a été conçu selon l'idée que les gens ont tendance à saisir du texte beaucoup plus rapidement qu'ils ne le lisent, l'écrivent ou le retravaillent. Par conséquent, si vous devez aller faire du café ou passer un appel téléphonique ou que vous avez fini votre phrase, appuyez sur la touche Esc.

Vim fournit plusieurs touches pour vous aider à obtenir la bonne position du curseur pour insérer des caractères. On énumère les plus utiles ici .

        i               insère AVANT le curseur
a insère APRÈS le curseur (ajout)

shift+i (or I) insère au DÉBUT de la ligne
shift+a (or A) ajoute à la FIN de la ligne

Vous notez des ressemblances ? Bien, parce que c'est un principe de base de Vim. Une grande partie de Vim est réellement très intuitive.

Bien ! Alors comment faites-vous pour créer de nouvelles lignes ?

o               crée une nouvelle ligne AU-DESSOUS de la ligne courante et place le curseur au début de la nouvelle ligne.

shift+o (ou O) crée une nouvelle ligne AU-DESSUS de la ligne courante et place le curseur au début de la nouvelle ligne.

Merveilleux ! Je n'ai pas à appuyer sur End Enter ou HomeShift+Enter. À présent, comment j'écris du texte ?

				
r remplace le caractère à la position du curseur et revient en mode normal.
En d'autres termes, remplace un caractère
shift+r (ou R) entre dans ce que les gens appellent généralement le mode remplacement. Vim est plutôt intelligent.
Observez comment la touche de retour arrière fonctionne dans ce mode.

Très bien ! Comment je supprime des caractères ?

        x               supprime un caractère sous le curseur. Semblable à supprimer.
shift+x (ou X) supprime un caractère avant le curseur.
Agit comme la touche de retour arrière.

Le mode visuel

Sélectionner dans vim peut se faire à la souris, si mousemodel est défini correctement. Voyez :help mousemodel à ce sujet. La méthode recommandée pour les sélections est d'employer le mode visuel.

En mode normal, saisissez v . Vous verrez en bas à gauche de votre écran :

                -- VISUEL --

ou quelque chose de semblable.

Vous pouvez à présent sélectionner du texte avec les touches de déplacement h, j, k, l. On peut effacer (couper) la sélection avec x ou copier, coller celle-ci avec les touches y et p. Vous devez être en dehors du mode visuel pour taper ces dernières commandes. Pour quitter le mode visuel, appuyer sur la touche magique, Esc.

y représente Yank et p Paste. Essayez-les. Nous les reverrons tout à l'heure.

Annuler et Rétablir

Après avoir copié et collé, on est amené à faire des erreurs. Comment annuler, Control+Z ? Non. En mode normal, appuyez simplement sur u . Commencez-vous à voir ici la puissance des modes principaux ? Les touches sont souvent très rapides et intuitives.

Comment rétablir ? r ? Non, les commandes r et R sont prises par le mode remplacement. Appuyez sur Control+R pour rétablir.

Jusqu'où est-il possible d'annuler ? Ça va très loin, en fait. Dans les versions les plus récentes, vous pouvez annuler à partir de n'importe quel moment depuis de début de la session courante de vim.

La dernière version de vim à l'heure où j'écris, vim 7.0 prend même en charge les arborescences d'annulations.

On peut dire quelque chose comme :

	:earlier 10m

# ou

:earlier 2h

et cela vous ramènerait 10 minutes ou 2 heures plus tôt. (Si vim était ouvert il y a deux heures.)

De même pour :later.

Jusqu'ici nous n'avons abordé que les bases. Ce sont des choses que la plupart des personnes connaissent. Si ce n'est pas le cas, vous devriez ! Ce que nous venons d'aborder est le plus important. Apprenez à employer vim tel un couteau suisse pour écrire et programmer.

Copier, effacer, coller

Dans vim, une sélection peut être copiée avec y. C'est diffèrent de la commande yank d'emacs, qui colle. Dans vim, la commande pour coller est p. Coller et copier peuvent aussi être effectués dans les registres. Il n'y a pas d'effacement dans vim. Tout entre dans la mémoire tampon—ou, optionnellement, dans un registre nommé avec un seul caractère de la liste {a-zA-Z0-9}.

        y       : copie la sélection. (Emploie le mode visuel ou copie implicitement tel yas vers yank une phrase - voir Mnemoniques ci-dessous)
yy : copie la ligne courante.
Y : copie la ligne courante.
d : supprime (coupe) la sélection. Même usage que y.
dd : supprime (coupe) la ligne courante.
D : supprime depuis ici jusqu'à la fin de la ligne.
p : copie la sélection (Coller est intelligent. Si vous copiez une ligne entière, il la placera au-dessous de la ligne courante .) Reportez-vous à 'ddp' ci-dessous dans claviers combos

Notez que la portée de l'action de Y est différente de celle de D ; en effet, Y = yy. Si vous souhaitez modifier ce comportement, consultez la partie "Associer des commandes et leurs abréviations" plus loin.

    fy     : copie la sélection et la colle dans le registre f
fd : supprime la sélection et la colle dans le registre f
(Cela fonctionne avec xyy xY et tout autres choses similaires aussi)

fp : colle ce qui est présent dans les registres f.

Vous pouvez consulter les registres en utilisant la commande :reg[isters]. Il est possible que vous ne puissiez pas utiliser des registres en majuscule dans votre version de vim, donc je vous suggère de ne pas les utiliser.

 

Utiliser un nom de registre en majuscule ajoute un 'y'ank ou un 'd'elete au contenu d'un registre existant ; la version en minuscule le remplace.

 
 --Ben

Les autres registres sont spéciaux, stockant souvent du texte ou des marques (voir ci-dessous) pour d'autres commandes. Par conséquent, vous ne devriez pas y toucher. Le registre + constitue une exception.

Le presse-papier de Vim est indépendant du presse-papier externe du système d'exploitation. Vim importe le texte contenu dans le presse-papier du système d'exploitation vers le registre +. Pour coller du texte copié dans une autre application, employez le registre +. La commande est : +p

De la même façon, copier ou supprimer dans ce registre + écrira dans le presse-papiers du système d'exploitation. Donc si vous souhaitez copier quelque chose dans un autre programme, employez +y

Mnémoniques

Les mnémoniques sont des commandes exécutant des tâches ordinaires. Ce qui les distingue des commandes normales est leur capacité fondamentale à s'en souvenir d'après les tâches qu'elles exécutent. Pour bien comprendre et utiliser les commandes mnémoniques, on doit d'abord comprendre les objets texte. Reportez-vous à :help text-objects ou lisez la partie relative aux « objets texte » ci-dessous. Comme exemple de commande mnémonique, saisissez ctx :

ctx - modifie jusqu'à x (supprime d'ici jusqu'au premier caractère x et vous conduit dans un mode insertion)
dtx - supprime jusqu'à x

Les commandes mnémoniques qui sont soumises aux objets texte

Il y a plusieurs objets dans vim qui agissent en tant qu'objets texte : des mots, des phrases, des blocs, etc. . Vim vous permet de les utiliser dans les sélections et les éditions.

        daw - supprime un mot
dw - supprime d'ici jusqu'à la fin du mot
daW - supprime un mot (incluant des caractères spéciaux, à l'exception de l'espace)
dW - supprime d'ici jusqu'à la fin du mot

das - supprime la phrase où nous sommes
daB - supprime un bloc intérieur de code {}

Des règles comme celles-ci peuvent s'appliquer en général aux objets texte :

	
s - phrase
w - mot
W - MOT
t - balise ( 'dat' supprime depuis <xml-style-tag> jusqu'à </xml-style-tag>
p - paragraphe
B - bloc de code ( '{' ou '}' fonctionne seulement pour des blocs de style C)

Formes de parenthèse:
( ou ) - parenthèse ( ... )
[ ou ] - [ .. ]
< ou > - se rapporte à <....>
{ ou } - { bloc également visé par le bloc b ci-dessus

Formes de citation:
Juste comme les formes de parenthèse
", ', ` - peut être employé pour se rapporter aux objets texte délimités par eux.


Ces choses peuvent de ce fait être utilisées de manière semblable à :

        da<text-object> : supprime un objet texte
di<text-object> : supprime la partie interne de l'objet texte.
(Cela laisse le () ou les espaces dans les mots ou le {} dans les blocs)

Leur utilisation ne s'arrête pas ici ; souvenez-vous que vim est intelligent. Elles peuvent aussi bien être utilisées pendant les sélections en mode visuel. En mode visuel, faîtes comme pour sélectionner une phrase. De même, un mot peut être choisi avec aw ou un bloc interne avec }.

Lisez :help text-objects pour en savoir plus.

Nombres préfixes

Presque chaque commande peut être précédée avec un nombre pour la répéter de manière perceptible. C'est-à-dire ,

	# Aller 6 lignes plus bas
6j
# Supprimer les 10 prochaines lignes
10 dd

C'est une fonction très peu utilisée qui peut considérablement faciliter le traitement de texte.

Navigation légèrement avancée

Navigation simple sur une ligne

Vim fournit plusieurs commandes à l'aide d'une seule touche pour accéder à un caractère particulier dans la ligne. Ceci couplé à une bonne utilisation des techniques d'insertion de vim devrait vous conduire où vous souhaitez presque sans effort.

Nous apprendrons d'abord comment se déplacer à l'aide des mots, puisque se déplacer avec des caractères peut souvent être lent et astreignant.

	
(ptca = puts the cursor at, place le curseur à)

w - Vous mène un mot en avant. ptca au début du prochain mot. ('W' fait presque la même chose, mais pour les "mots" qui peuvent inclure des caractères spéciaux (à l'exception de 'l'espace'))
e - ptca la fin de ce mot. Si le curseur est déjà à la fin de ce mot, il vous méne à la fin du prochain mot.
b - recule d'un mot; ptca début du mot précédent

Ensuite, il est important de savoir comment accéder à des emplacements particuliers dans une ligne. Des endroits importants sont le début de la ligne et la fin de la ligne.

        0 - ptca début de la ligne

Vous vous souvenez des expressions régulières ? Vim essaie de faciliter le cours de l'apprentissage. Les deux commandes suivantes devraient se présenter naturellement si vous pensez aux expressions régulières.

	
^ - ptca premier caractère non-vierge de la ligne
$ - ptca la fin de la ligne

Les commandes suivantes sont vraiment tout aussi utiles. Elles vous conduisent à la plus proche occurrence d'un caractère dans une ligne particulière.

	
fx - ptca l'occurence suivante (vers l'avant)
du caractère 'x' dans la même ligne.
Fx - ptca l'occurence précèdente du caractère

Celles-ci forment également les blocs de construction chaque fois qu'un mouvement générique est demandé—comme dans les macros.

Les commandes g

Les commandes g, comme je les appelle, correspondent à un ensemble utile de commandes goto qui facilitent les déplacements. Les énoncer simplement devrait suffire.

	
1G - Vous conduit au début du fichier
0G - à la fin du fichier

Une bonne manière de s'en souvenir est que 1 apparaît souvent avant (vers la gauche de) 0 dans la rangée de nombres (au-dessus de la rangée qwerty) sur un clavier qwerty.

	
gD - vous conduit à la première occurrence (intelligente) du mot sous le curseur dans le même fichier. C'est intelligent, puisqu'en langage de programmation, cela vous conduit à la définition ou à la déclaration de la fonction ou de la variable.
gj - va à la prochaine ligne. C'est semblable à j quand il n'y a pas de sauts de ligne.
Quand il y a des sauts de ligne, saisir j vous conduira à la prochaine nouvelle ligne. gj vous conduira au même caractère dans la prochaine rangée. (Essayez-le.)
gk - Semblable.
(Pour éviter les sauts de ligne, saisissez :set nowrap)

Notez en effet que le g minuscule est nommé opérateur étendu chez vim. Il fait bien plus qu'un simple goto. En effet, l'utilisateur peut consulter :help g pour plus d'informations. Je mentionnerai quelques informations utiles :

	
gf - Ouvre le nom de fichier sous le curseur
ga - Écrit la valeur ascii du caractère sous le curseur.
gs - Arrête vim pendant 1 seconde. Évidemment, comme la plupart des commandes vim, on peut préfixer ceci avec un nombre pour obtenir une commande générale de mise en sommeil.

Balises mnémoniques

Les balises sont un dispositif très utile de vim. Elles vous permettent de marquer votre position actuelle et d'aller faire un tour. Vous pouvez ensuite revenir à l'ancienne position du curseur avec une combinaison de touches.

	
ma - marque la position actuelle avec la lettre 'a'.
`a - revient à la marque a
'a - place le curseur au début de la ligne a
:marks pour voir une liste des balises effectuées.

Les balises sont intelligentes. Même si vous éditez du texte avant la balise, changeant de ce fait son nombre de ligne ou si vous éditez sur la ligne elle-même (affectant le nombre de caractères), vim prendra en charge les balises convenablement. Vous pourrez toujours revenir à votre ancienne balise avec la même combinaison de touches. Notez que ces déplacements de balises sont souvent appelés sauts.

Il y a quelques registres définis par défaut. En voici quelques-uns bien pratiques :

	
`` - reviens à la dernière position du curseur avant un saut.
`. - reviens où était le curseur la dernière fois qu'une édition a été effectuée.
Cela place le curseur au début de l'édition.
'( - va au début de la phrase actuelle
') - va à la fin de la phrase actuelle
'{ - va au début du paragraphe actuel
'} - va à la fin du paragraphe actuel

Se déplacer vers une ligne

Pour aller vers la ligne foobar, saisissez simplement :foobar ou foobarG. Par exemple, pour se diriger vers la ligne 234 :

	
:234
234G

Je recommande vivement d'employer :number, parce que vous pourrez voir le numéro de ligne que vous êtes en train de saisir.

Comme toujours, souvenez-vous que dans vim, si vous faîtes une erreur au milieu d'une commande, appuyez sur Esc

Naturellement, si vous vous rendez fréquemment à un endroit, je vous suggérerai d'employer une balise. Même si cette fonctionnalité ne vous semble pas géniale, c'est très utile quand pour déboguer des programmes.

Navigation écran par écran

Comme nous l'avons vu, un des aspects de conception de vim était de permettre à vos mains de rester sur la rangée alphabétique au milieu du clavier. Alors comment faire pour ne pas utiliser les touches page précédente et la page suivante ?

	
Control+(f/F) avance d'un écran (Page suivante)
Control+(b/B) recule d'un écran (Page précédente)
Control+u monte d'un demi-écran
Control+d descend d'un demi-écran

La dernière chose importante à savoir en matière de navigation : si le nombre de ligne ne s'affiche pas en bas à gauche (la règle est fixée à off), saisissez simplement Control+G. Ceci devait vous afficher le nombre de ligne et d'autres statistiques dans la barre de statut inférieure

Les combinaisons de touches

Pensez aux combinaisons de touches comme aux combos dans un jeu de combat de style arcade. Vous pouvez faire des tâches triviales et répétitives en quelques frappes au clavier. Vous connaissez déjà la signification de chacune des touches, exactement comme des frappes légères et des coups de pied violents. Utiliser des combinaisons vous permet d'obtenir facilement le résultat escompté. En voici une illustration :

	
xp - intervertit le caractère courant et le suivant
ddp - intervertit la ligne courante et la suivante
A; - ajoute un point virgule à la fin de la ligne.
>> - augmente l'indentation de la ligne courante.
<< - diminue l'augmentation de la ligne courante.

Rechercher et remplacer

Il est relativement simple de rechercher avec vim. Saisissez simplement / en mode normal et commencez à écrire. Appuyez sur Enter pour rechercher. La touche n vous mènera à la prochaine recherche et Shift+n ou N à la précédente.

Une astuce très utile lors de la recherche est la touche # et la touche *. Celles-ci recherchent le mot sous le curseur, en arrière et en avant respectivement. Pour résumer ceci,

	
/foobar<keycap>Enter</keycap> recherche foobar
n va vers le prochain résultat
N va vers le précédent résultat
# recherche vers l'arrière le mot sous le curseur
* recherche vers l'avant le mot sous le curseur

La commande remplacer est légèrement plus compliquée. Elle est cependant sans égale dans des mains adroites. La syntaxe de la commande remplacer est la suivante :

	:[range]s[ubstitute]/pattern/string/[options]

La plage est un argument très intéressant à manier. La commande :help range de vim nous indique ce qu'on peut faire.

        Range           Signification
------ --------------
{number} un nombre de ligne absolu
. la ligne courante
$ la dernière ligne du fichier
% égal à 1,$ (le fichier entier)
* égal à '<,'> (l'aire de vision)
't la position de la balise t (en minuscule)
/{pattern}[/] la ligne suivante où (le motif) correspond
?{pattern}[?] la ligne précédente où (le motif) correspond
\/ la ligne suivante où le motif de recherche précédemment utilisé correspond
\? la ligne précédente où le motif de recherche précédemment utilisé correspond
\& la ligne suivante où le motif de remplacement précédemment utilisé correspond

La plupart des commandes de remplacement dans vim sont souvent écrites comme :%s/old_string/new_string, pour des raisons évidentes.

Examinons de nouveau l'aide de vim pour obtenir les options (en bref) :

	
Option Signification
------ --------------
c Interroge avant le remplacement. (Vérifie)
e N'affiche pas de messages d'erreur si un tel modèle n'est pas trouvé.
g Global (remplace toutes les occurrences dans la ligne).
i Ignore la casse.
I N'ignore pas la casse.
n Ne remplace pas. Renvoie seulement le nombre de correspondances réussies.

Pour, par exemple, un remplacement de ce modèle

	
:1,'bs/dog/cat/ceg

remplacera dog par cat après avoir vérifié avec vous, pour toutes les occurrences de cette ligne, depuis la ligne 1 vers la ligne où la balise est définie en tant que b. Aucune erreur ne sera affichée si dog n'est pas trouvé.

Référez-vous à la partie « Utiliser plusieurs fichiers » pour la recherche et le remplacement dans plusieurs fichiers.

Techniques de navigation utiles pour les programmeurs

Ceci aurait pu être intégré à à la partie navigation ci-dessus mais j'ai préféré en faire une partie à part pour développer le sujet.

Vim fournit diverses techniques au programmeur. La plus utile est le raccourci de saut de parenthèse.

	
% saute entre des paires de parenthèse correspondantes () {} [] <>. Avec l'extension match-it,
il sautera entre des balises dans les fichiers html - entre le <div ... > et le </div> correspondant

La commande goto est aussi très utile :

	
gD va à la déclaration globale de la variable ou de la fonction sous le curseur.
Cependant, cela fonctionnera seulement dans le même fichier.

gF va vers le nom de fichier sous le curseur. Très utile pour sauter vers les fichiers d'en-tête.

Vim s'intègre à ctags, d'une manière conviviale et naturelle. Cependant, je vous conseille de lire le manuel d'aide à ce propos.

Replis

Les replis sont une façon merveilleuse d'organiser et de grouper le code. Vous pouvez bien-sûr les employer pour éditer du texte, des documents LaTeX etc., mais ils améliorent surtout la lecture du code.

Il y a plusieurs méthodes de replis disponibles dans vim. Je décrirai seulement les méthodes manuelles et ferai brièvement mention des autres. Des informations supplémentaires peuvent être obtenues depuis :help fold

Je pense que le plus simple, pour expliquer les replis, est d'utiliser un exemple. Sélectionnez un fichier texte, de préférence de grande taille, qui dépasse au moins la hauteur d'un écran. Ouvrez-le avec vim et placez votre curseur où vous le souhaitez. En mode normal, saisissez :

	
zf3j

Après avoir appuyé sur j, vim créera un repli contenant les 3 prochaines lignes. Comment cela s'est-il produit ? Eh bien, zf signifie fermer un repli et connaissant les déplacements de vim, 3j doit descendre de 3 lignes. Ainsi, vim effectue un repli depuis la position actuelle jusqu'à 3 lignes plus bas.

Vim prend aussi en charge les replis à partir du mode visuel. Sélectionnez simplement une partie du texte et saisissez zf. Il devrait effectuer un repli également. Vous pouvez aussi indiquer une plage en mode commande. Par exemple, si vous souhaitiez créer un repli de 3 lignes au-dessus jusqu'à la 101ème ligne , vous feriez :

	
:-3, 101 fold

puis appuyez sur Entréevim devrait se plier à partir des 3 lignes au-dessus jusqu'à la ligne 101. Vim inversera pour vous la plage si les 3 lignes ci-dessus sont après la ligne 101 après le prompt. Vous pourriez également employer des balises si nécessaire.

Vim peut également faire des sélections de texte astucieuses. Supposons que vous écrivez du code C. Vous pouvez placer votre curseur sur un { et saisir

	 
zfa}

Cela se pliera jusqu'au }. Naturellement, comme nous l'avons appris ci-dessus, on peut aussi employer le plus naturel :

	 
zf%

pour effectuer la même opération. Enfin, on peut aussi employer une technique de recherche de repli. On peut saisir z/ et commencer à saisir la chaîne souhaitée. Il se pliera depuis la ligne courante vers la première occurrence qu'il trouvera dans la chaîne de recherche. De ce fait, saisir

        z/SearchString

effectuerait un repli convenable.

Comme on dit, plier n'est que la moitié du plaisir. À un certain stade, vous souhaiterez sans doute déplier le texte. Pour ce faire, placez simplement votre curseur à la même ligne que le repli et saisissez

        zo

Cela ouvrira de nouveau le repli. Cela ne supprimera pas le pli. Saisissez

        zc

pour le refermer de nouveau quand vous avez fini. Pour se déplacer rapidement entre différents replis, saisissez

        zj pour le repli suivant
zk pour le précèdent repli

Replis imbriqués

Comme nous l'avons déjà vu, vim permet des replis imbriqués. Si vous employez zo, il ouvrira seulement le premier repli, les autres replis resteront fermés. Les commandes suivantes se révéleront utiles dans la prise en charge des replis imbriqués

		
zO (shift+o) ouvre tous les replis imbriqués sur cette ligne (zc les refermera ègalement)

zr ouvre les replis de plus haut niveau dans le fichier. Par exemple, tous les replis de premier niveau.
zR ouvre tous les replis de tous les niveaux dans le fichier

zm ferme tous les replis ouverts de plus haut niveau dans le fichier.
zM ferme tous les replis de tous les niveaux dans le fichier.

zE supprime un repli

Faites attention quand vous supprimez un repli. Le dispositif annuler et rétablir de vim ne s'applique pas aux replis ; si vous supprimez un repli, vous ne pouvez pas appuyer sur u et le rétablir, et la commande . n'exécutera pas la dernière commande de repli.

Comment vim prend-il les replis en charge quand on recherche du texte ? Il agit comme si le repli n'était pas présent. Si le mot est trouvé pendant qu'on recherche dans un repli, il ouvrira le repli. Vim se comporte bizarrement dans ce cas. Il ne ferme pas le repli quand vous retirez votre curseur. Cependant, un rapide zm restaurera les replis.

Une fois que vous refermez le document créé contenant tous les replis, ces derniers seront perdus. Par conséquent, vous devez vous assurez d'enregistrer vos replis avant de quitter. Vous devez aussi charger les replis enregistrés après les avoir ouvert de nouveau. Cela peut être fait avec les commandes suivantes.

	
:mkview établit une vue des replis
:loadview

Vous pouvez naturellement automatiser ceci en ajoutant ce qui suit à votre .vimrc :

	
au BufWinLeave * mkview
au BufWinEnter * silent loadview

Il existe d'autres méthodes de repli que celles indiquées précédemment. Diff est une méthode remarquable (via vim -d file1 file2), qui définit seulement les lignes éditées non-pliées et indente les replis qui dépendent de l'indentation.

Sélections en mode visuel

Le mode visuel comprend ce qu'on peut appeler trois modes mineurs.

        v       - entre dans le mode visuel.
Shift+v - entre dans le mode visuel, où des lignes seulement (pleines ou non) peuvent être sélectionnées.
Ctrl+v - entre en mode visuel rectangulaire (mode bloc).

Testez ces possibilités, ça devrait vous permettre de mieux vous débrouiller avec le mode visuel. Le mode visuel rectangulaire est très utile pour du code provisoirement commenté ou pour retirer des commentaires.

Supposons que nous avons un bloc de code tel que

	
int main()
{
register int k;
...
...
}

Placez votre curseur au début de la déclaration principale. Appuyez sur Ctrl+v suivi par 6j. Ensuite, appuyez sur Shift+i et saisissez //. Enfin, appuyez sur Esc pour sortir du mode visuel.

Ceci devrait commenter le bloc entier avec des commentaires de style C++.

Filtres

Vous pouvez exécuter des commandes shell à partir de vim en saisissant :

        :! shell-command

Le concept de système GNU « un outil par action » rend le principe des filtres inévitable. En utilisant un filtre, on peut envoyer du texte dans notre mémoire tampon (écran), vers une commande externe—disons indent ou sort—dont la sortie est renvoyée vers vim.

En utilisant l'idée de plage citée ci-dessus, on pourrait écrire des choses telles que

        :%!gpg

pour chiffrer son message avec sa clé personnelle.

Il existe quelques autres exemples

	
:%!tr a-z n-za-m (This will ROT13 our data :))

:.,+5!sort

Comme indiqué ci-dessus dans la section de la plage, . représente la ligne courante. Un nombre positif signifie au-dessous et un nombre négatif signifie au-dessus.

Compilation de programmes

Avec les fonctions que nous venons de voir, nous pouvons compiler nos programmes par exemple comme ceci :

        :!gcc -Wall -g foo.c -o bar

ou faire une vérification de la syntaxe avec :

        :!gcc -fsyntax-only % 

Mais vim fournit en plus une commande make. On peut définir un programme make avec la commande :

        :set makeprg=gcc\ -g\ %

et ensuite make en faisant :

        :make

Il accepte des arguments en ligne de commande, vous permettant de faire des choses telles que :

        :make all
:make install

Par défaut, le makeprg est défini à make dans le répertoire où vim se trouve. Cet emplacement par défaut correspond au répertoire où nous nous trouvions quand nous avons lancé vim ou gvim. Reportez-vous à la section Gestionnaire de fichiers avec vim ci-dessous pour trouver le répertoire courant et le modifier.

S'il y avait des erreurs, vim vous les affichera. Si vous employez un langage assez courant, vim peut même analyser le fichier d'erreur et vous donner beaucoup plus d'informations. Appuyez sur Enter dans la fenêtre d'erreur devrait par défaut vous diriger vers la première erreur.

Si les erreurs peuvent être analysées, ces commandes devraient vous fournir les combinaisons idéales :

	
:cc - vous affichera l'erreur courante
:cn - vous dirigera vers la prochaine erreur
:cN - vous dirigera vers l'erreur précédente
:copen - ouvre la fenêtre d'erreur dans un petite mémoire tampon où vous pouvez analyser les erreurs. Appuyez sur <keycap>Enter</keycap> pour vous diriger vers cette erreur.

Cela devrait rendre votre cycle -> édition -> compilation plus facile.

Utiliser plusieurs fichiers

Souvent, les programmeurs ou les développeurs utilisent plusieurs fichiers à la fois. Je suppose que vous savez comment diviser des fenêtres et tout ce qui s'ensuit. Sinon, vous pouvez lire le tutoriel Vim :help vsplit

À partir de vim 7.0, les onglets sont pris en charge. Les onglets peuvent être ouverts avec

        :tabnew file.txt

Pour parcourir les onglets, on pourrait utiliser :tabnext (:tabn) et :tabprevious (:tabp). On peut par défaut, également se diriger vers l'onglet précèdent ou prochain en employant Control+PgUp et Control+PgDwn à condition naturellement qu'il n'y ait pas d'autres programmes associés à ces combinaisons de touches, comme Gnome-terminal, très courant et gérant plusieurs onglets.

Une autre manière d'ouvrir et d'éditer plusieurs fichiers est le tampon. Tous les fichiers que vous ouvrez sont dans votre tampon jusqu'à ce que vous les fermiez. Pour ouvrir un fichier en mémoire tampon, utilisez simplement la commande d'édition usuelle

        :e foo.txt 

Les commandes suivantes sont bien pratiques pour utiliser les tampons :

	

:bfirst passe au premier tampon
:bn passe au prochain tampon
:bp passe au tampon précédent
:blast passe au dernier tampon
:ls liste les tampons ouverts
:buf foo.txt place foo.txt dans le tampon

La fonction la plus puissante des tampons apparaît lors de leur prise en charge dans un batch. Vim intègre la commande bufdo, qui vous permet d'exécuter une commande pour tous les fichiers de votre tampon

        :bufdo {cmd}

En citant le manuel de vim,

Ce qu'il fait fondamentalement est

	

:bfirst
:{cmd}
:bnext
:{cmd}
etc ...

La commande échoue quand le fichier courant ne peut être fermé et que [!]n'est pas présent à la fin de la commande. Si une erreur est détectée sur un tampon, les tampons suivants ne seront pas parcourus. Les tampons non listés sont ignorés. Le dernier tampon, ou le dernier parcouru au moment d'une erreur, devient le tampon courant. {cmd} peut contenir | pour enchaîner plusieurs commandes. {cmd} ne doit pas supprimer ou ajouter des tampons dans la liste.

Pour chercher dans plusieurs fichiers, on fera simplement

        :bufdo /searchstring/

Pour chercher et remplacer par exemple, on pourrait faire

	

:bufdo %s/oldtext/newtext/ge

Il existe d'autres choses intéressantes que l'on peut faire avec la mémoire tampon. On peut sauvegarder son projet entier dans une archive tarball en faisant quelque chose de semblable à

	

:silent bufdo !tar -rvf backup.tar %

Naturellement, tous les fichiers n'ont pas besoin d'être ouverts dans vim, vous pourriez définir la variable args dans vim, et employer argdo de la même façon.

Par exemple, pour indenter tous les fichiers dans foobar/, on pourrait faire

	

:args foobar/*
:argdo !indent % | update

update écrit seulement dans le fichier en cas de modification.

Gestionnaire de fichiers avec Vim

Ouvrez un répertoire avec vim path/to/dir ou depuis vim, c'est-à-dire path/to/dir. Un gestionnaire de fichiers permet à chacun de parcourir et de faire des modifications sur les fichiers. Appuyez sur Enter pour accéder à un répertoire et sur j, k se déplacer en haut ou en bas.

Ce qui suit devrait vous aider :

        d - pour créer un répertoire
D - pour en supprimer un
R - pour renommer

On peut définir dans quel répertoire est vim en employant la commande cd comme

        :cd path/to/dir

Comme prévu, on peut employer :pwd pour trouver le répertoire courant dans lequel est vim

Vous pouvez également accéder et éditer des fichiers sur une machine distante à travers des protocoles comme ssh et ftp en utilisant l'extension netrw.

Associer des commandes et leurs abréviations

Associer des commandes et leurs abréviations est une partie essentielle de la ligne de survie du programmeur dans vim

Des commandes peuvent être associées de la façon suivante :

	

:map <keycap>keystrokes</keycap> commande-devant-être-exécutée

Cela associera la commande sous deux modes. Employez nmap, si vous souhaitez associer une commande seulement en mode normal et imap en mode insertion.

Par exemple, on pourrait considérer

	

:nmap \cc !gcc\ -g\ %

Cela signifierai que saisir \cc (rapidement) en mode normal exécuterait la compilation via gcc sur le programme courant en permettant le déboguage.

Les abréviations sont réellement des choses utiles à avoir dans son arsenal. Elles vous permettent de remplacer un grand mot par un plus petit ou de réparer vos erreurs de saisie communes. Un exemple pourra établir ceci assez clairement :

	

:iab cs Computer Science.
:iab mroe more

Cela remplacera cs (suivi par un espace) par Computer Science chaque fois que je le saisis et remplacera mroe par more. Le i représente le mode insertion et le ab abréviation. On pourrait saisir :ab aussi bien, bien que cela ne soit pas recommandé. (cela remplacerai une de nos commandes \cs par \Computer Science.)

Pour supprimer l'association ou l'abréviation ci-dessus, saisissez simplement :

	

:unmap \cc ou
:unab cs

respectivement.

Si vous souhaitez que ces abréviations ou ces associations perdurent parmi les diverses utilisations de vim, placez-les simplement dans votre ~/.vimrc.

Comme exemple final, prenons l'association de Y vers une manière plus intuitive de l'utiliser. On pourrait faire :

	

:map Y y$

pour cette session et pour l'enregistrer de façon permanente, ajoutez :

	

map Y y$

à votre ~/.vimrc

Macros

Ce sont des outils extrêmement puissants pour vous aider à automatiser votre travail. C'est comme écrire un programme pour vous aider à faire des traitements sur du texte, mais sans avoir à apprendre un langage de programmation.

Imaginez la puissance dont vous disposeriez si vous pouviez utiliser les combinaisons de touches de vim pour travailler sur du texte (filtrer, trier, etc.).  C'est précisément ce que les macros vous permettent. Les macros stockent un ensemble de commandes dans un registre. C'est le même ensemble de registres dans lequel vous copiez et collez, donc faites attention à ne pas écraser un registre par accident. Vous pouvez ensuite exécuter les commandes indiquées dans ce registre.

La syntaxe pour déclarer des macros est :

	

qx&#60;ensemble de commandes&#62;q
(Le second q doit être saisi en mode normal seulement.)

Cela stocke l'ensemble de commandes dans le registre x. Pour l'exécuter, tapez simplement @x. @@ lance la dernière macro exécutée.

Ce sera plus simple avec un exemple. Supposons que vous ayez un tableau dont, le délimiteur de champ est : comme celui-ci :

	

Name Age Fav. Animal
Bob : 24 : Duck
Harry : 18 : Tiger
John : 36 : Dog
... : .. : ....

Supposons que la liste est très longue, contenant 50 noms ou plus. Vous devez extraire l'animal favori de chacun et les mettre dans une liste.

Naturellement on peut employer sed, mais on peut aussi aisément le faire en utilisant des macros. Pour cela, procédez de la manière suivante :

  1. Placez votre curseur sur Bob et appuyez sur q suivi par une lettre de registre, disons a (pour animal)

  2. Saisissez 2f:w, ce qui devrait vous placer sur le second délimiteur puis au début du prochain mot, "Duck".

  3. Copier le mot avec la commande yaw.

  4. On souhaite coller ce mot à la fin du fichier mais nous devons d'abord baliser notre position. Notons-le dans un registre, par exemple f, avec mf.

  5. Allons à la fin du fichier avec 0G.

  6. Insérons une nouvelle ligne avec o et repassons en mode normal avec Esc

  7. Collons avec p

  8. Retournons à la position originale du curseur avec f

  9. Finalement, pour rendre la macro répétitive, placez le curseur au début de la prochaine ligne, avec j0 . Sortez du mode macro en saisissant q.

Si maintenant vous saisissez :regs, vous verrez ce qui suit dans le registre a :

	

2f:wyawmf0G0^[`fj0

(Esc a été remplacé par ^[.)

À présent, pour exécuter cette macro, placez simplement votre curseur sur Bob, et saisissez @a. Cela devrait exécuter la macro et vous laisser au début de Harry. Vous pouvez la répéter une fois encore avec @@ ou simplement avec un point, . (répète la dernière commande). Pour la répéter plusieurs fois, vous pourriez saisir 50@@, ce qui l'exécuterait 50 fois.

Si vous avez trouvé cette macro très utile, vous pouvez la copier dans votre ~/.vimrc, en remplaçant ^[ par <Esc> et l'associer à une combinaison de touches. Par exemple, la macro ci-dessous rassemblerait tous les animaux à la fin du fichier :

	nmap \fa 2f:wyawmf0G0<keycap>Esc</keycap>`fj0

Les macros sont beaucoup trop peu utilisées. Apprenez à les utiliser efficacement.

Complétion

Vim gère à présent l'omni-complétion de même que la complétion intelligente des tampons. Les commandes suivantes pourraient résumer cela :

	

Ctrl-n - complète (une petite fenêtre devrait apparaître). Vous pouvez parcourir les possibilités avec
Ctrl-n et Ctrl-p. Continuer simplement à saisir quand vous avez fini.

Ctrl-x f - complète ce nom de fichier.

Ctrl-x i - complète à partir des fichiers inclus.

Correction orthographique

Depuis la version 7.0, Vim prend en charge la correction orthographique. Pour l'activer, saisissez simplement :

        :set spell 

et pour le désactiver :

        :set nospell

Vous pouvez parcourir le fichier à la recherche d'erreurs d'orthographe en utilisant ]s et [s . Vous pouvez les corriger en saisissant z= . Cela affichera une liste des possibilités dans laquelle vous pourrez choisir.

Paramètres courants

Cette section décrit simplement une liste de paramètres courants que des utilisateurs pourraient trouver utile. On peut consulter mon .vimrc pour voir ce que j'emploie.

On active les options avec une valeur vraie (true) en utilisant :set option. On désactive les options (unset) en utilisant :set nooption, et on affecte avec des valeurs en employant :set option=value. On peut inverser une option vraie/fausse en utilisant :set invoption.

Les options ont souvent des noms abrégés qui vous permettent de les saisir plus rapidement. Par exemple, ft pour filetype, vous permet de saisir :set ft=value au lieu de :set filteype=value plus long.

Options

	

autoindent - indente automatiquement votre curseur sur la nouvelle ligne, selon l'emplacement où cette ligne débute
smartindent - plus intelligent que autoindent. Sait reculer d'un cran si vous avez fermé un bloc en utilisant '}', ou avancer d'un cran si vous avez ouvert un bloc avec '{'.
Il tient aussi compte du langage et connait les délimiteurs de bloc pour plusieurs langages.
hlsearch - active ou désactive la recherche en surbrillance.
incsearch - Active ou désactive la recherche incrémentale . La recherche incrémentale est le nom que les programmeurs donnent à une recherche de type "Trouvez-ce-que-vous-tapez". C'est TRÈS utile.
expandtab - remplit les onglets avec des espaces quand un onglet est saisi. Le nombre d'espaces dépend de l'option tabstop.
showmatch - affiche les (), {}, [] correspondants lors de la saisie. Très utile pour des programmeurs.
ft=VALUE - définit filetype = VALUE

Par exemple, on peut faire

	


:set hlsearch active hlsearch
:set nohlsearch désactive hlsearch
:set invhlsearch inverse hlsearch (qui était précédemment désactivé à cause de la dernière commande)

Pour changer le type de fichier de txt en html, vous feriez

        :set ft=html

et si vous ne trouvez encore aucune syntaxe accentuée,

        :enable syntax
# ou
:syntax on

Pour obtenir de l'aide à propos d'une option, faîtes :help option

Il y a une option très utile que j'utilise souvent. Je suis un de ces frappeurs compulsifs de la touche Esc. Si je suis décidé à modifier ma commande ou à l'abandonner ou simplement si je ne tiens plus en place, j'appuie sur la touche Esc (souvent plus d'une fois). Vim le prend en compte gentiment et émet simplement un bip, ce qui ne me dérange pas du tout. Cependant, dans une situation professionnelle telle qu'au bureau ou au laboratoire, les gens assis près de vous seront irrités par le(s) bip(s). On peut dire à vim de couper le son de l'alerte et d'opter pour une alerte visuelle avec

        :set visualbell

Maintenant, essayez d'appuyer sur deux Esc à la suite. L'écran devrait simplement clignoter.

Commandes diverses

Cette section énumère quelques commandes diverses qui ne conviendraient nulle par ailleurs dans ce document.

	
Shift+j (ou J) - Cela ajoutera la ligne précédente à la fin de la ligne courante. Apprenez à l'utiliser convenablement. C'est ce que des utilisateurs d'autres éditeurs exécuteraient avec <keycap>End</keycap><keycap>Del</keycap> . Une mnémotechnique pour Joindre la ligne suivante avec la ligne courante.

Shift+k (ou K) - Affiche la page de manuel pour le mot sous le curseur

~ - Modifie la casse du caractère sous le curseur et se déplace vers le prochain caractère.

. - répète la dernière commande, quelle qu'elle soit. (La commande peut être l'insertion d'une phrase ou même d'une macro). Ce que nombre d'éditeurs appelleraient répétition.

Vim peut aussi incrémenter et décrémenter des nombres pour vous. C'est extrêmement utile lors de l'écriture de macros génériques plus grandes. Comme d'habitude, des nombres précédés par un 0 sont considérés comme octaux ; des nombres précédés par un 0x sont considérés comme hexadécimaux. Les nombres ne commençant pas par zéro sont décimaux

	

Control+A - Incrémente le nombre sous le curseur
Control+X - Décrémente le nombre sous le curseur

Extensions utiles

Vim, tout comme Emacs est un éditeur extensible. Il existe des milliers d'extensions pour vous faciliter la vie avec vim. Simplement par souci d'être le plus complet possible, je vous donne quelques unes des extensions les plus populaires :

        taglist explorer        affiche une liste de fonctions, comme un EDI

matchit active la correspondance avec les expressions régulières en utilisant %

gpg chiffre vos données avec votre clé privée. Déchiffre de la même façon.

calendar affiche un calendrier dans votre fenêtre vim, dans lequel vous pouvez ajouter des notes
minibufexplorer affiche les tampons et les onglets ouverts dans une liste horizontale dans le haut ou le fond de votre écran.

tetris eh oui, avec un mode de jeu tournant et les meilleurs scores !

En plus de ça, il existe beaucoup de suites de programmation disponibles pour les langages les plus populaires tels que C/C++, LaTeX, Java,Python, Ruby, etc...

Il y a actuellement plus de 2200 extensions disponibles chez http://www.vim.org/, dont certaines sont destinées à vous faciliter la vie ou la rendre un peu amusante. Tirer profit d'une telle somme de dur labeur et de talent est plus qu'un simple divertissement ; cela prend tout son sens.

Astuces finales

Quand tout est dit et fait, il vous appartient de devenir efficace en employant vim. Il n'y pas de mal à réfléchir à quelle est la meilleure façon de faire quelque chose quand vous la faîtes pour la première fois. Cela vous fera gagner beaucoup de temps à l'avenir. À un certain stade, tous les utilisateurs efficaces de vim ont réfléchit aux commandes qu'ils saisissaient. Pensez-y, avant que cela ne devienne une habitude. Vous perdrez du temps, tout d'abord, mais les effets que vous récolterez plus tard seront très importants.

Si vous êtes du genre à toujours oublier dans quel mode insertion/normal/visuel vous êtes, souvenez-vous, comme nous l'avons vu, que vim est censé fonctionner en mode normal. Les mots doivent être insérés en courtes séquences. Dès que vous finissez de saisir ou de sélectionner, revenez en mode normal, en appuyant sur Esc.

En outre, souvenez-vous que les commandes de vim peuvent être répétées en ajoutant des nombres aux commandes. Telles que 7j ou 3w, etc. . C'est probablement l'outil clé de vim le moins utilisé. Écrivez aussi des macros que vous pourrez répéter.

Enfin, personnalisez votre .vimrc avec des fonctions utiles, des macros, des abréviations et des réglages. Avant d'écrire à la hâte votre propre extension, chercher dans vim.org. Il y a beaucoup d'extensions qui peuvent vous aider à améliorer la productivité quotidienne. Et oui, souvenez-vous que l'aide de vim :help est un chef-d'oeuvre de documentation.

Bonne chance dans votre pratique de Vim !