Vim Cheatsheet

Vim est l’éditeur de texte modal le plus puissant. Cette cheatsheet vous aidera à maîtriser ses commandes essentielles.

🚀 Installation

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Ubuntu/Debian
sudo apt install vim

# CentOS/RHEL/Fedora
sudo yum install vim
# ou
sudo dnf install vim

# macOS
brew install vim

📚 Les modes de Vim

Vim fonctionne avec plusieurs modes :

ModeDescriptionComment y accéder
NormalMode par défaut pour navigationEsc
InsertMode d’insertion de textei, a, o
VisualMode de sélectionv, V, Ctrl-v
CommandMode commande:
ReplaceMode remplacementR

🏃‍♂️ Commandes de base

Ouvrir/Fermer

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# Ouvrir un fichier
vim fichier.txt

# Ouvrir plusieurs fichiers
vim file1.txt file2.txt

# Ouvrir à la ligne N
vim +N fichier.txt

# Ouvrir au pattern
vim +/pattern fichier.txt

Quitter Vim

CommandeAction
:qQuitter (si pas de modifications)
:q!Quitter sans sauvegarder
:wqSauvegarder et quitter
:xSauvegarder et quitter
ZZSauvegarder et quitter (mode normal)
ZQQuitter sans sauvegarder (mode normal)

⬅️➡️ Navigation

Déplacements de base

ToucheAction
hGauche
jBas
kHaut
lDroite
↑↓←→Flèches (marchent aussi)

Déplacements dans la ligne

CommandeAction
0Début de ligne
^Premier caractère non-blanc
$Fin de ligne
g_Dernier caractère non-blanc
f{char}Aller au caractère {char}
F{char}Aller au caractère {char} (arrière)
t{char}Aller avant le caractère {char}
T{char}Aller avant le caractère {char} (arrière)
;Répéter f, t, F, T
,Répéter f, t, F, T (inverse)

Déplacements par mots

CommandeAction
wMot suivant
WMOT suivant (séparé par espaces)
bMot précédent
BMOT précédent
eFin du mot
EFin du MOT
geFin du mot précédent

Déplacements dans le fichier

CommandeAction
ggDébut du fichier
GFin du fichier
{N}GAller à la ligne N
:{N}Aller à la ligne N
Ctrl-dDescendre d’une demi-page
Ctrl-uMonter d’une demi-page
Ctrl-fPage suivante
Ctrl-bPage précédente
HHaut de l’écran
MMilieu de l’écran
LBas de l’écran
%Parenthèse/crochet correspondant

✍️ Insertion et édition

Entrer en mode insertion

CommandeAction
iInsérer avant curseur
IInsérer en début de ligne
aInsérer après curseur
AInsérer en fin de ligne
oNouvelle ligne en dessous
ONouvelle ligne au dessus
sSupprimer caractère et insérer
SSupprimer ligne et insérer
CChanger jusqu’en fin de ligne
ccChanger toute la ligne

Suppression

CommandeAction
xSupprimer caractère sous curseur
XSupprimer caractère avant curseur
ddSupprimer ligne
DSupprimer jusqu’en fin de ligne
dwSupprimer mot
dbSupprimer mot précédent
d$Supprimer jusqu’en fin de ligne
d0Supprimer jusqu’en début de ligne
dGSupprimer jusqu’en fin de fichier
dggSupprimer jusqu’en début de fichier

Copie et collage

CommandeAction
yyCopier ligne
YCopier ligne
ywCopier mot
y$Copier jusqu’en fin de ligne
y0Copier jusqu’en début de ligne
pColler après curseur/ligne
PColler avant curseur/ligne
"*yCopier vers presse-papier système
"*pColler depuis presse-papier système

Annulation et répétition

CommandeAction
uAnnuler
Ctrl-rRefaire
UAnnuler tous changements de la ligne
.Répéter dernière commande

🔍 Recherche et remplacement

Recherche

CommandeAction
/patternRechercher vers le bas
?patternRechercher vers le haut
nRésultat suivant
NRésultat précédent
*Chercher mot sous curseur (vers bas)
#Chercher mot sous curseur (vers haut)
:nohSupprimer surlignage recherche

Remplacement

CommandeAction
:s/old/newRemplacer première occurrence ligne
:s/old/new/gRemplacer toutes occurrences ligne
:%s/old/new/gRemplacer dans tout le fichier
:%s/old/new/gcRemplacer avec confirmation
:1,10s/old/new/gRemplacer lignes 1 à 10

Options de recherche

1
2
3
4
:set ignorecase    " Ignorer la casse
:set smartcase     " Casse intelligente
:set hlsearch      " Surligner résultats
:set incsearch     " Recherche incrémentale

👁️ Mode visuel

Sélection

CommandeAction
vMode visuel caractère
VMode visuel ligne
Ctrl-vMode visuel bloc
gvRe-sélectionner dernière sélection
oAller à l’autre bout de sélection

Actions sur sélection

CommandeAction
dSupprimer sélection
yCopier sélection
cChanger sélection
>Indenter
<Désindenter
=Auto-indenter
~Inverser la casse
uMinuscules
UMajuscules

🗃️ Fichiers multiples

Buffers

CommandeAction
:e fichierOuvrir fichier
:lsLister buffers
:b NAller au buffer N
:bnBuffer suivant
:bpBuffer précédent
:bdFermer buffer
:ballOuvrir tous buffers

Onglets

CommandeAction
:tabnewNouvel onglet
:tabe fichierOuvrir fichier dans onglet
gtOnglet suivant
gTOnglet précédent
:tabcloseFermer onglet
:tabonlyFermer autres onglets

Fenêtres divisées

CommandeAction
:splitDivision horizontale
:vsplitDivision verticale
Ctrl-w sDivision horizontale
Ctrl-w vDivision verticale
Ctrl-w h/j/k/lNavigation fenêtres
Ctrl-w wFenêtre suivante
Ctrl-w qFermer fenêtre
Ctrl-w oFermer autres fenêtres
Ctrl-w =Égaliser tailles

⚙️ Configuration (.vimrc)

Exemple de configuration dans ~/.vimrc :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
" === CONFIGURATION DE BASE ===
set nocompatible              " Désactiver compatibilité vi
syntax on                     " Coloration syntaxique
filetype plugin indent on    " Détection type de fichier

" === APPARENCE ===
set number                    " Numéros de ligne
set relativenumber           " Numéros relatifs
set cursorline               " Surligner ligne courante
set showmatch                " Montrer parenthèses correspondantes
set ruler                    " Montrer position curseur
set laststatus=2             " Toujours afficher barre statut
colorscheme desert           " Thème de couleurs

" === INDENTATION ===
set tabstop=4                " Largeur tab
set shiftwidth=4             " Largeur indentation
set expandtab                " Remplacer tabs par espaces
set autoindent               " Auto-indentation
set smartindent              " Indentation intelligente

" === RECHERCHE ===
set hlsearch                 " Surligner résultats
set incsearch                " Recherche incrémentale
set ignorecase               " Ignorer casse
set smartcase                " Casse intelligente si majuscules

" === ÉDITION ===
set backspace=indent,eol,start  " Backspace intelligent
set clipboard=unnamedplus       " Utiliser presse-papier système
set mouse=a                     " Support souris
set wrap                        " Retour à la ligne visuel
set scrolloff=5                 " Garder 5 lignes visibles

" === RACCOURCIS PERSONNALISÉS ===
" Leader key
let mapleader = ","

" Sauvegarder avec Ctrl+s
nnoremap <C-s> :w<CR>
inoremap <C-s> <Esc>:w<CR>a

" Navigation entre buffers
nnoremap <Leader>n :bnext<CR>
nnoremap <Leader>p :bprev<CR>

" Désactiver surlignage recherche
nnoremap <Leader>h :noh<CR>

" === PLUGINS (avec vim-plug) ===
call plug#begin('~/.vim/plugged')
Plug 'preservim/nerdtree'
Plug 'vim-airline/vim-airline'
Plug 'tpope/vim-fugitive'
call plug#end()

🔧 Commandes avancées

Macros

CommandeAction
q{letter}Commencer enregistrement macro
qArrêter enregistrement
@{letter}Exécuter macro
@@Répéter dernière macro
10@aExécuter macro ‘a’ 10 fois

Registres

CommandeAction
"{letter}yCopier dans registre {letter}
"{letter}pColler depuis registre {letter}
:regVoir tous les registres
"0pColler dernière copie (pas suppression)
"_dSupprimer sans affecter registres

Marks (marques)

CommandeAction
m{letter}Placer marque
'{letter}Aller à la marque (début ligne)
`{letter}Aller à la marque (position exacte)
''Retour position précédente
:marksLister toutes les marques

Folding (pliage de code)

CommandeAction
zfCréer un fold
zoOuvrir fold
zcFermer fold
zaToggle fold
zROuvrir tous folds
zMFermer tous folds
zjFold suivant
zkFold précédent

📝 Commandes ex utiles

Fichiers et buffers

1
2
3
4
5
6
:w                  " Sauvegarder
:w filename         " Sauvegarder sous
:wa                 " Sauvegarder tous
:r filename         " Insérer contenu fichier
:r !command         " Insérer sortie commande
:e!                 " Recharger fichier

Manipulation de texte

1
2
3
4
5
6
7
:sort               " Trier lignes
:sort u             " Trier et supprimer doublons
:g/pattern/d        " Supprimer lignes contenant pattern
:g!/pattern/d       " Supprimer lignes ne contenant pas pattern
:1,10d              " Supprimer lignes 1 à 10
:1,10t20            " Copier lignes 1-10 après ligne 20
:1,10m20            " Déplacer lignes 1-10 après ligne 20

Commandes système

1
2
3
:!command           " Exécuter commande système
:r !ls              " Insérer liste fichiers
:w !sudo tee %      " Sauvegarder avec sudo

🎯 Patterns utiles

Expressions régulières Vim

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
.                   " N'importe quel caractère
*                   " 0 ou plus occurrences
\+                  " 1 ou plus occurrences
\?                  " 0 ou 1 occurrence
^                   " Début de ligne
$                   " Fin de ligne
\<                  " Début de mot
\>                  " Fin de mot
[abc]               " a, b ou c
[^abc]              " Tout sauf a, b, c
\d                  " Chiffre
\D                  " Non-chiffre
\s                  " Espace blanc
\S                  " Non-espace blanc

Exemples de remplacements utiles

1
2
3
:%s/\s\+$//g        " Supprimer espaces fin de ligne
:%s/\n\n\+/\r\r/g   " Remplacer lignes vides multiples par une seule
:%s/\v([0-9]+)/[\1]/g  " Entourer nombres de crochets

🚀 Plugins incontournables

Gestionnaires de plugins

  • vim-plug : Gestionnaire moderne et rapide
  • Vundle : Gestionnaire classique
  • pathogen : Gestionnaire simple

Plugins essentiels

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
" Navigation fichiers
Plug 'preservim/nerdtree'
Plug 'ctrlpvim/ctrlp.vim'

" Interface
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'

" Git
Plug 'tpope/vim-fugitive'
Plug 'airblade/vim-gitgutter'

" Édition
Plug 'tpope/vim-surround'
Plug 'jiangmiao/auto-pairs'
Plug 'preservim/nerdcommenter'

" Développement
Plug 'dense-analysis/ale'
Plug 'ycm-core/YouCompleteMe'

💡 Astuces pro

  1. Utilisez les objets de texte : diw (delete inner word), ca" (change around quotes)
  2. Maîtrisez les mouvements : Pensez en termes d’actions + mouvements
  3. Créez vos raccourcis : Personnalisez selon vos besoins
  4. Utilisez les registres : Gardez plusieurs éléments copiés
  5. Apprenez progressivement : Maîtrisez d’abord les bases

Objets de texte

ObjetDescription
iwinner word
awa word
isinner sentence
asa sentence
ipinner paragraph
apa paragraph
i"inner quotes
a"a quotes
i(inner parentheses
a(a parentheses
itinner tag (HTML)
ata tag (HTML)

Vim a une courbe d’apprentissage raide, mais une fois maîtrisé, c’est l’éditeur le plus efficace !