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 :
Mode | Description | Comment y accéder |
---|
Normal | Mode par défaut pour navigation | Esc |
Insert | Mode d’insertion de texte | i , a , o |
Visual | Mode de sélection | v , V , Ctrl-v |
Command | Mode commande | : |
Replace | Mode remplacement | R |
🏃♂️ 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#
Commande | Action |
---|
:q | Quitter (si pas de modifications) |
:q! | Quitter sans sauvegarder |
:wq | Sauvegarder et quitter |
:x | Sauvegarder et quitter |
ZZ | Sauvegarder et quitter (mode normal) |
ZQ | Quitter sans sauvegarder (mode normal) |
⬅️➡️ Navigation#
Déplacements de base#
Touche | Action |
---|
h | Gauche |
j | Bas |
k | Haut |
l | Droite |
↑↓←→ | Flèches (marchent aussi) |
Déplacements dans la ligne#
Commande | Action |
---|
0 | Dé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#
Commande | Action |
---|
w | Mot suivant |
W | MOT suivant (séparé par espaces) |
b | Mot précédent |
B | MOT précédent |
e | Fin du mot |
E | Fin du MOT |
ge | Fin du mot précédent |
Déplacements dans le fichier#
Commande | Action |
---|
gg | Début du fichier |
G | Fin du fichier |
{N}G | Aller à la ligne N |
:{N} | Aller à la ligne N |
Ctrl-d | Descendre d’une demi-page |
Ctrl-u | Monter d’une demi-page |
Ctrl-f | Page suivante |
Ctrl-b | Page précédente |
H | Haut de l’écran |
M | Milieu de l’écran |
L | Bas de l’écran |
% | Parenthèse/crochet correspondant |
✍️ Insertion et édition#
Entrer en mode insertion#
Commande | Action |
---|
i | Insérer avant curseur |
I | Insérer en début de ligne |
a | Insérer après curseur |
A | Insérer en fin de ligne |
o | Nouvelle ligne en dessous |
O | Nouvelle ligne au dessus |
s | Supprimer caractère et insérer |
S | Supprimer ligne et insérer |
C | Changer jusqu’en fin de ligne |
cc | Changer toute la ligne |
Suppression#
Commande | Action |
---|
x | Supprimer caractère sous curseur |
X | Supprimer caractère avant curseur |
dd | Supprimer ligne |
D | Supprimer jusqu’en fin de ligne |
dw | Supprimer mot |
db | Supprimer mot précédent |
d$ | Supprimer jusqu’en fin de ligne |
d0 | Supprimer jusqu’en début de ligne |
dG | Supprimer jusqu’en fin de fichier |
dgg | Supprimer jusqu’en début de fichier |
Copie et collage#
Commande | Action |
---|
yy | Copier ligne |
Y | Copier ligne |
yw | Copier mot |
y$ | Copier jusqu’en fin de ligne |
y0 | Copier jusqu’en début de ligne |
p | Coller après curseur/ligne |
P | Coller avant curseur/ligne |
"*y | Copier vers presse-papier système |
"*p | Coller depuis presse-papier système |
Annulation et répétition#
Commande | Action |
---|
u | Annuler |
Ctrl-r | Refaire |
U | Annuler tous changements de la ligne |
. | Répéter dernière commande |
🔍 Recherche et remplacement#
Recherche#
Commande | Action |
---|
/pattern | Rechercher vers le bas |
?pattern | Rechercher vers le haut |
n | Résultat suivant |
N | Résultat précédent |
* | Chercher mot sous curseur (vers bas) |
# | Chercher mot sous curseur (vers haut) |
:noh | Supprimer surlignage recherche |
Remplacement#
Commande | Action |
---|
:s/old/new | Remplacer première occurrence ligne |
:s/old/new/g | Remplacer toutes occurrences ligne |
:%s/old/new/g | Remplacer dans tout le fichier |
:%s/old/new/gc | Remplacer avec confirmation |
:1,10s/old/new/g | Remplacer 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#
Commande | Action |
---|
v | Mode visuel caractère |
V | Mode visuel ligne |
Ctrl-v | Mode visuel bloc |
gv | Re-sélectionner dernière sélection |
o | Aller à l’autre bout de sélection |
Actions sur sélection#
Commande | Action |
---|
d | Supprimer sélection |
y | Copier sélection |
c | Changer sélection |
> | Indenter |
< | Désindenter |
= | Auto-indenter |
~ | Inverser la casse |
u | Minuscules |
U | Majuscules |
🗃️ Fichiers multiples#
Buffers#
Commande | Action |
---|
:e fichier | Ouvrir fichier |
:ls | Lister buffers |
:b N | Aller au buffer N |
:bn | Buffer suivant |
:bp | Buffer précédent |
:bd | Fermer buffer |
:ball | Ouvrir tous buffers |
Onglets#
Commande | Action |
---|
:tabnew | Nouvel onglet |
:tabe fichier | Ouvrir fichier dans onglet |
gt | Onglet suivant |
gT | Onglet précédent |
:tabclose | Fermer onglet |
:tabonly | Fermer autres onglets |
Fenêtres divisées#
Commande | Action |
---|
:split | Division horizontale |
:vsplit | Division verticale |
Ctrl-w s | Division horizontale |
Ctrl-w v | Division verticale |
Ctrl-w h/j/k/l | Navigation fenêtres |
Ctrl-w w | Fenêtre suivante |
Ctrl-w q | Fermer fenêtre |
Ctrl-w o | Fermer 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#
Commande | Action |
---|
q{letter} | Commencer enregistrement macro |
q | Arrêter enregistrement |
@{letter} | Exécuter macro |
@@ | Répéter dernière macro |
10@a | Exécuter macro ‘a’ 10 fois |
Registres#
Commande | Action |
---|
"{letter}y | Copier dans registre {letter} |
"{letter}p | Coller depuis registre {letter} |
:reg | Voir tous les registres |
"0p | Coller dernière copie (pas suppression) |
"_d | Supprimer sans affecter registres |
Marks (marques)#
Commande | Action |
---|
m{letter} | Placer marque |
'{letter} | Aller à la marque (début ligne) |
`{letter} | Aller à la marque (position exacte) |
'' | Retour position précédente |
:marks | Lister toutes les marques |
Folding (pliage de code)#
Commande | Action |
---|
zf | Créer un fold |
zo | Ouvrir fold |
zc | Fermer fold |
za | Toggle fold |
zR | Ouvrir tous folds |
zM | Fermer tous folds |
zj | Fold suivant |
zk | Fold 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#
- Utilisez les objets de texte :
diw
(delete inner word), ca"
(change around quotes) - Maîtrisez les mouvements : Pensez en termes d’actions + mouvements
- Créez vos raccourcis : Personnalisez selon vos besoins
- Utilisez les registres : Gardez plusieurs éléments copiés
- Apprenez progressivement : Maîtrisez d’abord les bases
Objets de texte#
Objet | Description |
---|
iw | inner word |
aw | a word |
is | inner sentence |
as | a sentence |
ip | inner paragraph |
ap | a paragraph |
i" | inner quotes |
a" | a quotes |
i( | inner parentheses |
a( | a parentheses |
it | inner tag (HTML) |
at | a tag (HTML) |
Vim a une courbe d’apprentissage raide, mais une fois maîtrisé, c’est l’éditeur le plus efficace !