Skip to content

Vim

Vim est un éditeur de texte en mode modal disponible sur quasiment tous les systèmes Unix/Linux. On y alterne entre plusieurs modes (normal, insertion, visuel, commande...) pour naviguer et éditer du texte sans quitter le clavier. Ce mémo reprend l'essentiel des commandes, d'après vim.rtorr.com.

Général

vim
:help mot-clé   " Accéder à l'aide sur un mot-clé
:sav[eas] fichier " Enregistrer sous un nouveau nom
:clo[se]        " Fermer le panneau courant
:ter[minal]     " Ouvrir un terminal dans Vim
K               " Afficher la page de man du mot sous le curseur

Déplacement du curseur

vim
h j k l         " Gauche, bas, haut, droite
gj gk           " Se déplacer sur une ligne visuelle (texte replié sur plusieurs lignes)
H M L           " Aller en haut / au milieu / en bas de l'écran
w W             " Aller au mot suivant (W ignore la ponctuation)
e E             " Aller à la fin du mot (E ignore la ponctuation)
b B             " Aller au mot précédent (B ignore la ponctuation)
ge gE           " Aller à la fin du mot précédent
%               " Aller au caractère correspondant ( ) [ ] { }
0                " Aller au début de la ligne
^                " Aller au premier caractère non blanc de la ligne
$                " Aller à la fin de la ligne
g_               " Aller au dernier caractère non blanc de la ligne
gg               " Aller au début du fichier
G                " Aller à la fin du fichier
5gg ou 5G        " Aller à la ligne 5
gd               " Aller à la définition locale
gD               " Aller à la définition globale
fx               " Aller au prochain x sur la ligne
tx               " Aller juste avant le prochain x sur la ligne
Fx               " Aller au x précédent sur la ligne
Tx               " Aller juste après le x précédent sur la ligne
;                " Répéter le dernier f, t, F ou T
,                " Répéter le dernier f, t, F ou T en sens inverse
}                " Aller au paragraphe/bloc suivant
{                " Aller au paragraphe/bloc précédent
zz               " Centrer le curseur à l'écran
zt               " Placer le curseur en haut de l'écran
zb               " Placer le curseur en bas de l'écran
Ctrl+e           " Défiler vers le bas sans bouger le curseur
Ctrl+y           " Défiler vers le haut sans bouger le curseur
Ctrl+b           " Page précédente
Ctrl+f           " Page suivante
Ctrl+d           " Descendre d'une demi-page
Ctrl+u           " Monter d'une demi-page

Mode Insertion

vim
i                " Insérer avant le curseur
I                " Insérer au début de la ligne
a                " Insérer (ajouter) après le curseur
A                " Insérer (ajouter) à la fin de la ligne
o                " Ouvrir une nouvelle ligne en dessous
O                " Ouvrir une nouvelle ligne au-dessus
ea               " Insérer à la fin du mot
Ctrl+h           " Supprimer le caractère précédent
Ctrl+w           " Supprimer le mot précédent
Ctrl+j           " Insérer un saut de ligne
Ctrl+t           " Indenter la ligne
Ctrl+d           " Dé-indenter la ligne
Ctrl+n           " Autocomplétion suivante
Ctrl+p           " Autocomplétion précédente
Ctrl+rx          " Insérer le contenu du registre x
Ctrl+ox          " Exécuter une seule commande en mode normal puis revenir en insertion
Esc ou Ctrl+c    " Quitter le mode insertion

Édition

vim
r                " Remplacer un seul caractère
R                " Entrer en mode remplacement (jusqu'à Esc)
J                " Joindre la ligne suivante à la ligne courante
gJ               " Idem, sans insérer d'espace
gwip             " Reformater le paragraphe (reflow)
g~               " Inverser la casse (avec un mouvement)
gu               " Passer en minuscules (avec un mouvement)
gU               " Passer en majuscules (avec un mouvement)
cc               " Modifier la ligne entière
c$ ou C          " Modifier jusqu'à la fin de la ligne
ciw              " Modifier le mot sous le curseur
cw ou ce         " Modifier jusqu'à la fin du mot
s                " Substituer un caractère et passer en insertion
S                " Substituer la ligne entière
xp               " Transposer deux lettres (supprimer puis coller après)
u                " Annuler
U                " Annuler les modifications sur la dernière ligne
Ctrl+r           " Rétablir (redo)
.                " Répéter la dernière commande

Mode Visuel

vim
v                " Sélection caractère par caractère
V                " Sélection ligne par ligne
Ctrl+v           " Sélection par bloc
o                " Aller à l'autre extrémité de la sélection
O                " (bloc) Aller au coin opposé de la sélection
aw               " Sélectionner un mot (a word)
ab               " Sélectionner un bloc entre ( )
aB               " Sélectionner un bloc entre { }
at               " Sélectionner un bloc entre balises <>
ib               " Sélectionner l'intérieur du bloc ( )
iB               " Sélectionner l'intérieur du bloc { }
it               " Sélectionner l'intérieur des balises <>
Esc ou Ctrl+c    " Quitter le mode visuel
>                " Décaler la sélection vers la droite
<                " Décaler la sélection vers la gauche
y                " Copier (yank) la sélection
d                " Supprimer la sélection
~                " Inverser la casse de la sélection
u                " Passer la sélection en minuscules
U                " Passer la sélection en majuscules

Registres

vim
:reg[isters]     " Afficher le contenu des registres
"xy              " Copier dans le registre x
"xp              " Coller depuis le registre x
"+y              " Copier dans le presse-papier système
"+p              " Coller depuis le presse-papier système

Registres spéciaux : 0 (dernier yank), " (registre sans nom, dernier delete/yank), % (nom du fichier courant), # (nom du fichier alternatif), * (presse-papier X11 primaire), + (presse-papier X11), / (dernier motif de recherche), : (dernière commande), . (dernier texte inséré), - (dernier petit delete), = (résultat d'une expression), _ (registre "trou noir", pour supprimer sans écraser un registre).

Marques et positions

vim
:marks           " Lister toutes les marques
ma               " Définir la marque a à la position courante
`a               " Aller à la position de la marque a
y`a              " Copier jusqu'à la marque a
`0               " Aller à la position d'ouverture précédente
`"               " Aller à la dernière position de sortie du fichier
`.               " Aller à la dernière modification
``               " Aller à la position avant le dernier saut
:ju[mps]         " Afficher la liste des sauts
Ctrl+i           " Aller au saut suivant
Ctrl+o           " Aller au saut précédent
:changes         " Afficher la liste des modifications
g,               " Aller à la modification suivante
g;               " Aller à la modification précédente
Ctrl+]           " Aller à la définition du tag sous le curseur

Macros

vim
qa               " Enregistrer une macro dans le registre a
q                " Arrêter l'enregistrement
@a               " Exécuter la macro a
@@               " Ré-exécuter la dernière macro utilisée

Copier-coller (registre "sans nom")

vim
yy ou 2yy        " Copier une (ou deux) ligne(s)
yw               " Copier jusqu'à la fin du mot
yiw              " Copier le mot sous le curseur
yaw              " Copier le mot avec les espaces environnants
y$ ou Y          " Copier jusqu'à la fin de la ligne
p                " Coller après le curseur
P                " Coller avant le curseur
gp               " Coller après et placer le curseur après le texte collé
gP               " Coller avant et placer le curseur après le texte collé
dd ou 2dd        " Supprimer une (ou deux) ligne(s)
dw               " Supprimer jusqu'à la fin du mot
diw              " Supprimer le mot sous le curseur
daw              " Supprimer le mot avec les espaces environnants
:3,5d            " Supprimer les lignes 3 à 5
:g/motif/d       " Supprimer toutes les lignes correspondant au motif
d$ ou D          " Supprimer jusqu'à la fin de la ligne
x                " Supprimer le caractère sous le curseur

Indentation

vim
>>               " Indenter la ligne courante
<<               " Dé-indenter la ligne courante
>%               " Indenter un bloc englobant (avec %)
<%               " Dé-indenter un bloc englobant
>ib              " Indenter l'intérieur du bloc ( )
>at              " Indenter le bloc englobé par des balises <>
3==              " Ré-indenter 3 lignes
=%               " Ré-indenter un bloc englobant
gg=G             " Ré-indenter le fichier entier
]p               " Coller en ajustant l'indentation à celle du contexte

Quitter

vim
:w               " Enregistrer le fichier
:w !sudo tee %   " Enregistrer avec les droits sudo
:wq ou :x ou ZZ  " Enregistrer et quitter
:q               " Quitter
:q! ou ZQ        " Quitter sans enregistrer
:wqa             " Enregistrer et quitter tous les onglets

Recherche et remplacement

vim
/motif           " Rechercher vers l'avant
?motif           " Rechercher vers l'arrière
\vmotif          " Recherche avec regex "very magic" (moins d'échappements)
n                " Répéter la recherche dans le même sens
N                " Répéter la recherche dans le sens inverse
:%s/ancien/nouveau/g   " Remplacer toutes les occurrences dans le fichier
:%s/ancien/nouveau/gc  " Idem, avec confirmation pour chaque occurrence
:noh[lsearch]    " Effacer le surlignage de la dernière recherche

Recherche multi-fichiers

vim
:vim[grep] /motif/ {fichiers}  " Rechercher un motif dans plusieurs fichiers
:cn[ext]         " Aller à l'occurrence suivante
:cp[revious]     " Aller à l'occurrence précédente
:cope[n]         " Ouvrir la fenêtre de résultats (quickfix)
:ccl[ose]        " Fermer la fenêtre de résultats

Onglets

vim
:tabnew fichier  " Ouvrir un fichier dans un nouvel onglet
Ctrl+wT          " Déplacer la fenêtre courante dans un nouvel onglet
gt               " Aller à l'onglet suivant
gT               " Aller à l'onglet précédent
#gt              " Aller à l'onglet numéro #
:tabm[ove] #     " Déplacer l'onglet à la position #
:tabc[lose]      " Fermer l'onglet courant
:tabo[nly]       " Fermer tous les autres onglets
:tabdo commande  " Exécuter une commande sur tous les onglets

Fichiers et buffers multiples

vim
:e[dit] fichier  " Ouvrir un fichier dans un buffer
:bn[ext]         " Buffer suivant
:bp[revious]     " Buffer précédent
:bd[elete]       " Fermer le buffer courant
:b[uffer] 2      " Aller au buffer numéro 2
:ls ou :buffers  " Lister les buffers ouverts
:sp[lit] fichier " Diviser la fenêtre horizontalement
:vs[plit] fichier " Diviser la fenêtre verticalement
Ctrl+ws          " Diviser la fenêtre horizontalement
Ctrl+wv          " Diviser la fenêtre verticalement
Ctrl+ww          " Passer à la fenêtre suivante
Ctrl+wq          " Fermer la fenêtre courante
Ctrl+wx          " Échanger la fenêtre courante avec la suivante
Ctrl+w=          " Égaliser la taille des fenêtres
Ctrl+wh          " Aller à la fenêtre de gauche
Ctrl+wl          " Aller à la fenêtre de droite
Ctrl+wj          " Aller à la fenêtre du dessous
Ctrl+wk          " Aller à la fenêtre du dessus
Ctrl+wH          " Déplacer la fenêtre tout à gauche (pleine hauteur)
Ctrl+wL          " Déplacer la fenêtre tout à droite (pleine hauteur)
Ctrl+wJ          " Déplacer la fenêtre tout en bas (pleine largeur)
Ctrl+wK          " Déplacer la fenêtre tout en haut (pleine largeur)

Diff / Pliage (folding)

vim
zf               " Créer un pli (fold) sur la sélection
zd               " Supprimer un pli
za               " Basculer l'état d'un pli (ouvert/fermé)
zo               " Ouvrir un pli
zc               " Fermer un pli
zr               " Réduire le niveau de pliage (ouvrir un peu plus)
zm               " Augmenter le niveau de pliage (fermer un peu plus)
zi               " Activer/désactiver le pliage
]c               " Aller au prochain changement (mode diff)
[c               " Aller au changement précédent (mode diff)
do ou :diffg[et] " Récupérer les différences depuis l'autre fichier
dp ou :diffpu[t] " Envoyer les différences vers l'autre fichier
:diffthis        " Activer le mode diff sur la fenêtre courante
:dif[fupdate]    " Rafraîchir les surlignages de diff
:diffo[ff]       " Désactiver le mode diff

Aide-mémoire rapide

SituationCommande
Enregistrer et quitter:wq
Quitter sans enregistrer:q!
Remplacer partout dans le fichier avec confirmation:%s/ancien/nouveau/gc
Copier une ligne et la colleryy puis p
Supprimer un motdiw
Annuler / rétabliru / Ctrl+r
Enregistrer une macro et la rejouer 10 foisqa ... q puis 10@a
Ouvrir un fichier dans un split vertical:vs fichier
Chercher et se déplacer entre les résultats/motif puis n / N
Ré-indenter tout le fichiergg=G

Source : vim.rtorr.com

Publié sous lience MIT.