Les commandes clavier de l’éditeur vim

© Christian PAULUS. Document créé le 11 novembre 2005 , mis à jour le 29 août 2010.

Ce n'est pas le tout d'être une femme du monde. Encore faut-il savoir de quel monde il s'agit. Pierre Dac

Accueil du site > Astuces > VIM > Les commandes clavier de l’éditeur vim

Documentation / ex 1.79,vi,view,vim

view est un lien sur vim, comme vi, ex, etc. Les commandes claviers sont donc communes.

view est un vi sans fonction d’écriture. Un vi en mode lecture seule. Que l’on peut forcer avec le bang (!).

Sous MacOsX, gvim n’est pas disponible. C’est MacVim qui vous rendra ce service. L’utilisation de vim sous l’environnement graphique du Mac. Si vous installez MacVim via les ports, MacVim.app est recopié dans votre dossier Applications/MacPorts.

Komodo Edit propose le mode vi pour son éditeur. Menu Préférences, déplier Editor, Sélectionner KeyBindings, cocher la case Enable Vi emulation.

Mode Insertion et mode commande

En mode insertion, ce que vous tapez sur le clavier apparaît à l’écran vi, au fur et à mesure de la frappe.

Le mode commande permet de naviguer dans le fichier courant (celui ouvert lors du lancement de vi) ou entre plusieurs fichiers, de lancer certaines commandes plus ou moins complexes ou délicates sur la ligne de commande.

Pour quitter le mode insertion, pressez simplement la touche Esc. Pour retourner dans le mode insertion, pressez la touche i pour insérer du texte à partir de la position courante du curseur.

Les commandes simples de navigation ne nécessitent pas de passer en mode ligne de commande, il suffit de presser la touche correspondante. C’est le cas par exemple de i qui permet d’insérer du texte à la position courante du curseur.

Par contre, pour les commandes plus complexes, il faut précéder sa commande du caractère " :" (deux points), " !" (point d’exclamation) ou "/" (barre oblique) afin de passer sur la ligne de commande. Le curseur se positionne en bas de l’écran où l’on y retrouve ce caractère " :" qu’il faut compléter par la commande souhaitée puis valider la ligne en pressant la touche "entrée". Si vous ne voulez pas valider la ligne de commande, il suffit de presser la touche Esc. Si vous avez fait une erreur, vous pouvez annuler la précédente manipulation en pressant le touche u.

Petit lexique des commandes disponibles dans ex, vi, vim, gvim :

Déplacement

Pour déplacer le curseur dans un document ouvert, vous devez être en mode commande. Si vous êtes en mode insertion, presse Esc pour passer en mode commande.

hDéplace le curseur d’un caractère sur le gauche.
jDéplace le curseur d’un caractère vers le bas.
kDéplace le curseur d’un caractère vers le haut.
lDéplace le curseur d’un caractère sur le droite.
Ll en capitale. A précéder du nombre de ligne où déplacer le curseur, à partir du bas de l’écran. A ne pas confondre avec le texte. L’écran est ce qui apparaît dans la fenêtre.
MDéplace le curseur au milieu de l’écran, en début de ligne..
0Déplace le curseur en début de ligne courante. Chiffre 0, à ne pas confondre avec la lettre O en majuscule qui elle vous rajoute une ligne avant la position courante du curseur.
$Déplace le curseur en fin de ligne courante.
bDéplace le curseur au groupe de lettres précédent (mot, sans compter les apostrophes et les tirets).
BDéplace le curseur au mot précédent (tient compte des apostrophes et des tirets). A noter que pour b et B, vous pouvez précéder la commande du nombre de mots à parcourir. Par exemple, 8B renverra le curseur 8 mots avant la position courante, en tenant compte des apostrophes et tirets.
wDéplace le curseur au début du groupe de lettres suivant (mot, sans compter les apostrophes et les tirets).
WDéplace le curseur au début du mot suivant (tient compte des apostrophes et des tirets). A noter que pour w et W, vous pouvez précéder la commande du nombre de mots à parcourir. Par exemple, 8w renverra le curseur 8 mots après la position courante, sans tenir compte des apostrophes et des tirets.
FIdentique W, mais se positionne en fin de mot.
-Déplace le curseur en début de chaîne de la ligne précédente.
+Déplace le curseur au début de la ligne suivante.
%Déplace le curseur sur le complément de bloc typographique. Par exemple, si le curseur est sur une parenthèse ouvrante, il sera envoyé sur la parenthèse fermant le bloc courant. Fonctionne avec ’

’ (accolades), ’[]’ (crochets) et ’()’ (parenthèses).

GAller à la ligne du texte. Seul, G vous envoie en fin de texte. Précédé du numéro de ligne, le curseur est envoyé sur cette ligne. Par exemple, 50G envoie le curseur en début de la 50ème ligne de votre texte.
HAller à la ligne de l’écran. Fonctionne comme G mais ne concerne que l’écran, c’est à dire la partie visible de votre texte.
|Caractère pipe. Déplacer le curseur à la colonne n (préciser n avant le pipe, par exemple 5| pour déplacer le curseur sur le 5ème caractère de la ligne courante).
`<char>Aller au contexte marqué par le caractère <char> (voir ci-dessous).
’ <char>
:k<char>Marquer la position courante (le contexte) par le caractère <char>. Par exemple, entrez :ka marquera la position du curseur par la lettre ’a’. Plus loin, pour revenir à cette position ’a’, entrez en mode commande ’a ou `a.
m<char>’ idem :k<char>
QQuitter le mode vi et passer en mode ex. On se retrouve en mode commande, sur la ligne de commande. Pour repasser en mode vi, dans cette ligne de commande, entrez ’vi’.
Vous pouvez également vous déplacer simplement en utilisant les touches de déplacement de curseur (flèches, haut, bas, ou top, etc.)..

Rechercher

Pour effectuer une recherche dans le texte courant (celui affiché à l’écran de vi), vous devez être en mode commande.
/<texte>La barre oblique qui précède apparaît dans la ligne de recherche en bas d’écran lors de la frappe. Si elle apparaît dans le texte courant, c’est que vous êtes en mode insertion. Pour sortir de ce mode insertion, pressez Esc.
 ?Cherche l’occurrence avant la position courante du curseur.
/Après une première recherche (voir ci-dessus), cherche l’occurrence suivante.
n’ (idem)

Edition

aAjouter du texte après le curseur.
AAjouter du texte à la fin de la ligne courante.
iAjouter du texte à la position du curseur.
Ii en capitale. Ajouter du texte au début de la ligne courante.
JJoint la ligne suivante à la fin de la ligne courante.
oAjouter une nouvelle ligne après la position du curseur et se placer en mode insertion au début de cette nouvelle ligne.
OAjouter une nouvelle ligne avant la position du curseur et se placer en mode insertion au début de cette nouvelle ligne.
rRemplace le caractère sous le curseur.
CBascule en mode remplacement (au lieu d’insertion) pour la ligne courante jusqu’à appui de la touche Esc.
R’ idem C
uRestaurer (undo). Annuler derlière modification.
URestaurer la ligne courante.
Pour quitter le mode insertion et repasser en mode commande, pressez la touche Esc.
:rAjoute le fichier courant au fichier courant, à la position du curseur.
:r <filename>Ajoute le fichier ’filename’ au fichier courant, à la position du curseur.
.Répète la dernière commande.
 Tilde. Modifie la casse (minuscule/majuscule) du caractère courant. Précéder d’un chiffre n pour modifier les n caractères suivants.
&Répète la dernière commande de substitution.
>>Décale le texte à droite. Si x avant, décale les x lignes suivantes, à partir de la position du curseur.
>/<texte>Décale le texte à droite jusqu’à rencontrer le texte <texte>.
<<Même principe que ’>>’, mais décalage à gauche.
</<texte>Même principe que ’>/<texte>’ avec décalage à gauche.

Couper, Copier et Coller

Pour copier/coller du texte, vous devez être en mode commande. Si vous êtes en mode insertion, presse Esc pour passer en mode commande.
ccSupprime le texte de la ligne courante et positionne le curseur au début de cette ligne.
d^Couper du début de la ligne jusqu’au curseur.
ddCouper (supprimer) la ligne de texte qui se trouve sous le curseur. Si vous voulez couper plusieurs lignes en même temps, précédez dd du nombre de lignes concernées. Par exemple ’8dd’ coupe la ligne où se trouve le cuseur, et les 7 lignes suivantes, et les recopient dans le tampon. A noter que d8d et 8dd signifient la même chose.
dwCouper (supprimer) un mot. Dans le même esprit que ci-dessus, 4dw supprime les 4 mots qui suivent le curseur. 4dW prendra en compte les apostrophes et les tirets. A noter que d4w et 4dw signifient la même chose.
d / <motif>Coupe le texte à partir de la position courante du curseur et jusqu’à l’apparation du texte <motif>.
yyCopier la ligne de texte qui se trouve sous le curseur. Si vous voulez copier plusieurs lignes en même temps, précédez yy du nombre de lignes concernées. Par exemple ’8yy’ copie la ligne où se trouve le cuseur, et les 7 lignes suivantes, dans le tampon.
xCouper (supprimer) le caractère qui se trouve sous le curseur. Là aussi, vous pouvez faire précéder x du nombre de caractères souhaités.
pColler le texte copié (ou coupé) précédemment après la ligne où se trouve le curseur. Ce texte peut être le caractère coupé par la commande x, la ligne supprimée par le commande dd ou la ligne copiée par yy.
CSélectionne de la position courante à la fin de la ligne et permet la substitution du texte.
DSupprime le texte de la position courante du curseur à la fin de la ligne.

Sauvegarder et Quitter

Pour sauvegarder ou quitter vi, vous devez être en mode commande. Si vous êtes en mode insertion, presse Esc pour passer en mode commande.

:wSauvegarde le fichier courant. Le nom de fichier orginal est conservé.
:w !Force la sauvegarde du fichier courant (cas par exemple lorsqu’on lance vi via view). Le nom de fichier orginal est conservé.
:w <filename>Sauvegarde le fichier courant sous le nom de fichier <filename>.
:w >> <filename>Rajoute au fichier <filename> le fichier courant.
:wqSauvegarde le fichier courant et quitte vi. Le nom de fichier orginal est conservé.
:wq <filename>Sauvegarde le fichier courant sous le nom de fichier <filename> et quitte vi.
:q Quitte vi. Si un fichier en cours a été modifié, vi prévient l’utilisateur.
:q !Abandon de vi. Quitte sans sauvegarder.
Voir également la commande :r qui permet de lire un fichier et de l’insérer dans l’édition courante.

Commandes à l’aide de la touche <control>

Vous devez simultanément presser la touche Ctrl et le caractère de commande pour obtenir l’effet désiré, le tout en mode commande. Si vous êtes en mode insertion, presse Esc pour passer en mode commande.

Vous pouvez entrer le caractère en majuscule ou en minuscule. Le résultat est identique.

^A Renvoie le curseur sur la prochaine occurrence du mot se trouvant actuellement sous le curseur. Si manquant, recommence la recherche à partir du début du fichier.
^B Remonte d’une page. Pour remonter de plusieurs pages, précéder d’un chiffre : le nombre de pages souhaité.
^D Défilement de l’écran, déplace le curseur d’une ligne. Précédé d’un chiffre (nombre de lignes), la commande déplacera d’autant la position du curseur.
^E Identique ^d en essayant de ne pas déplacer le texte.
^FPour remonter de plusieurs pages, déplace le curseur d’un écran. Précédé d’un chiffre (nombre d’écrans), la commande déplacera d’autant la position du curseur.
^GAffiche le nom du fichier, son état, la position du curseur (numéro de ligne courant sur nombre total de lignes).
^H Identique h. Déplace le curseur d’un caractère sur le gauche.
^J Identique j. Déplace le curseur d’un caractère vers le bas.
^N Déplace le curseur d’un caractère vers le bas. En mode insertion, appelle l’auto-complétion.
^LRafaichissement (reconstruit l’affichage, pratique lorsque les messages systèmes redirigés sur votre terminal vous empêchent de travailler correctement).
^R’ (idem)
^MIdentique +.
^PIdentique k. Déplace le curseur d’un caractère vers le haut. En mode insertion, appelle l’auto-complétion.
^TRetour au dernier tag.
^UDéfilement de l’écran, en arrière par bloc de lignes, du texte.
^WDéplacement entre écrans si présents.
^YDéfilement en arrière, ligne par ligne.
^ZPasse en mode pause. Suspend l’édition courante.

Commandes (shell)

Certains caractères permettent de passer en mode commande, avec l’accord de l’administrateur de la machine.

 : ! Le caractère ’ :’ (deux points) suivi du ’ !’ (point d’exclamation) permet d’afficher le résultat de la commande shell au bas de la fenêtre sans modifier votre fichier. Pressez Esc pour revenir au mode précédent.
 !! Deux points d’exclamation qui se suivent permettent d’insérer le résultat de la commande shell dans la fenêtre d’édition. Par exemple, ’ !!date’ insére la date courante à la position du curseur (remplace la ligne courante).

Substitutions

La ligne de commande propose un outil puissant de substitution :

:s/celi/cela/Placé sur la bonne ligne, ceci sera remplacé par cela. Les autres lignes ne sont pas modifiées.
 :$s/ceci/cela/Le ’s’ précédé par ’$’ (symbole dollar) : la modification sera appliquée à la dernière ligne du fichier (substitution sélective).
 :%s/ceci/cela/Le ’s’ précédé par ’%’ (symbole pour cent) : la modification sera appliquée à l’ensemble du fichier (substitution globale).

Multifichiers

vim permet de travailler sur plusieurs fichiers en même temps. Par exemple en lançant sous shell ’vi fichier1 fichier2 fichier3’.

:e# Passe d’un fichier en mémoire au suivant.
:n Passe au fichier suivant dans la liste des fichiers ouverts.
:e <fichier-Y>Ouvre le fichier <fichier> en édition.
:argsListe des fichiers ouverts en mémoire.

Plussoyez !

Les forums sont fermés.