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 curseurDé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-pageMode 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 commandeMode 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 majusculesRegistres
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èmeRegistres 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 curseurMacros
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éeCopier-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 curseurIndentation
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 contexteQuitter
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 ongletsRecherche 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 rechercheRecherche 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ésultatsOnglets
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 ongletsFichiers 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 diffAide-mémoire rapide
| Situation | Commande |
|---|---|
| Enregistrer et quitter | :wq |
| Quitter sans enregistrer | :q! |
| Remplacer partout dans le fichier avec confirmation | :%s/ancien/nouveau/gc |
| Copier une ligne et la coller | yy puis p |
| Supprimer un mot | diw |
| Annuler / rétablir | u / Ctrl+r |
| Enregistrer une macro et la rejouer 10 fois | qa ... 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 fichier | gg=G |
Source : vim.rtorr.com
