✏️ Vim
Commandes essentielles pour l’éditeur de texte Vim : modes, navigation, édition et macros.
Vim est un éditeur de texte puissant disponible sur quasiment tous les systèmes Unix. Une fois maîtrisé, il permet d’éditer du code à une vitesse impressionnante.
Les modes
Vim fonctionne avec plusieurs modes. Comprendre ces modes est la clé pour utiliser Vim efficacement.
| Mode | Touche | Description |
|---|---|---|
| Normal | Esc | Mode par défaut, pour naviguer et exécuter des commandes |
| Insert | i, a, o | Mode d’insertion de texte |
| Visual | v, V, Ctrl+v | Mode de sélection |
| Command | : | Mode pour exécuter des commandes Ex |
# Passer en mode Insert
i # insérer avant le curseur
a # insérer après le curseur
I # insérer en début de ligne
A # insérer en fin de ligne
o # nouvelle ligne en dessous
O # nouvelle ligne au dessus
# Revenir en mode Normal
Esc # ou Ctrl+[Navigation
Mouvements de base
# Déplacements caractère par caractère
h # gauche
j # bas
k # haut
l # droite
# Déplacements par mot
w # début du mot suivant
W # début du mot suivant (séparé par espaces)
e # fin du mot courant
E # fin du mot courant (séparé par espaces)
b # début du mot précédent
B # début du mot précédent (séparé par espaces)
# Déplacements dans la ligne
0 # début de ligne
^ # premier caractère non-blanc
$ # fin de ligneMouvements avancés
# Par écran
Ctrl+f # page suivante (forward)
Ctrl+b # page précédente (backward)
Ctrl+d # demi-page vers le bas
Ctrl+u # demi-page vers le haut
# Dans le fichier
gg # début du fichier
G # fin du fichier
:42 # aller à la ligne 42
42G # aller à la ligne 42
# Par paragraphe/bloc
{ # paragraphe précédent
} # paragraphe suivant
# Par recherche
/motif # rechercher vers l'avant
?motif # rechercher vers l'arrière
n # occurrence suivante
N # occurrence précédente
* # rechercher le mot sous le curseur
# # rechercher le mot sous le curseur (arrière)Édition
Commandes de base
# Supprimer
x # supprimer caractère sous le curseur
X # supprimer caractère avant le curseur
dd # supprimer la ligne entière
D # supprimer jusqu'à la fin de ligne
dw # supprimer jusqu'au prochain mot
d$ # supprimer jusqu'à la fin de ligne
d0 # supprimer jusqu'au début de ligne
# Copier (yank)
yy # copier la ligne entière
Y # copier la ligne entière
yw # copier jusqu'au prochain mot
y$ # copier jusqu'à la fin de ligne
# Coller
p # coller après le curseur
P # coller avant le curseur
# Remplacer
r # remplacer un caractère
R # mode remplacement (écrase)
cw # changer jusqu'au prochain mot
cc # changer la ligne entière
C # changer jusqu'à la fin de ligne
s # supprimer caractère et passer en insert
S # supprimer ligne et passer en insertCombinaisons puissantes
La syntaxe Vim suit souvent le pattern : [nombre][commande][mouvement]
# Exemples de combinaisons
3dd # supprimer 3 lignes
5yy # copier 5 lignes
d3w # supprimer 3 mots
c2w # changer 2 mots
d} # supprimer jusqu'à la fin du paragraphe
y} # copier jusqu'à la fin du paragraphe
dG # supprimer jusqu'à la fin du fichier
d/motif # supprimer jusqu'au motifText objects
# Actions sur les objets de texte (inside/around)
ciw # changer le mot (change inner word)
caw # changer le mot + espaces (change around word)
ci" # changer le contenu entre guillemets
ca" # changer guillemets inclus
ci( # changer le contenu entre parenthèses
ci{ # changer le contenu entre accolades
ci[ # changer le contenu entre crochets
cit # changer le contenu d'une balise HTML
# Même logique avec d (delete), y (yank), v (visual)
diw # supprimer le mot
yi" # copier le contenu entre guillemets
vi{ # sélectionner le contenu entre accoladesMode Visual
# Entrer en mode visual
v # sélection caractère par caractère
V # sélection ligne par ligne
Ctrl+v # sélection en bloc (colonnes)
# Actions sur la sélection
d # supprimer
y # copier
c # changer
> # indenter
< # désindenter
u # minuscules
U # majuscules
~ # inverser la casseSélection en bloc
# Éditer plusieurs lignes à la fois
Ctrl+v # entrer en mode bloc
j/k # sélectionner les lignes
I # insérer au début de chaque ligne
A # insérer à la fin de chaque ligne
d # supprimer la sélection
c # changer la sélection
Esc # appliquer les changementsRecherche et remplacement
# Recherche simple
/motif # rechercher vers l'avant
?motif # rechercher vers l'arrière
n # occurrence suivante
N # occurrence précédente
# Remplacement
:s/old/new/ # remplacer première occurrence (ligne courante)
:s/old/new/g # remplacer toutes les occurrences (ligne courante)
:%s/old/new/g # remplacer dans tout le fichier
:%s/old/new/gc # remplacer avec confirmation
:5,10s/old/new/g # remplacer des lignes 5 à 10
# Options de recherche
:set ignorecase # recherche insensible à la casse
:set smartcase # sensible si majuscule présente
:set hlsearch # surligner les résultats
:noh # désactiver le surlignage temporairementCommandes Ex (mode commande)
# Fichiers
:w # sauvegarder
:w fichier.txt # sauvegarder sous
:q # quitter
:q! # quitter sans sauvegarder
:wq # sauvegarder et quitter
:x # sauvegarder (si modifié) et quitter
ZZ # équivalent à :wq
ZQ # équivalent à :q!
# Ouvrir des fichiers
:e fichier.txt # ouvrir un fichier
:e! # recharger le fichier (annuler les modifs)
:bn # buffer suivant
:bp # buffer précédent
:ls # lister les buffers
# Fenêtres
:split # diviser horizontalement
:vsplit # diviser verticalement
:sp fichier # ouvrir dans un split horizontal
:vsp fichier # ouvrir dans un split vertical
Ctrl+w h/j/k/l # naviguer entre fenêtres
Ctrl+w w # fenêtre suivante
:close # fermer la fenêtre
:only # fermer toutes les autres fenêtresMacros
Les macros permettent d’enregistrer une séquence d’actions et de la rejouer autant de fois que nécessaire.
# Enregistrer une macro
qa # commencer l'enregistrement dans le registre 'a'
# ... faire les actions ...
q # arrêter l'enregistrement
# Exécuter une macro
@a # exécuter la macro 'a'
@@ # répéter la dernière macro
5@a # exécuter la macro 'a' 5 fois
# Exemple pratique : ajouter des guillemets autour de chaque ligne
qa # démarrer l'enregistrement
0 # aller au début de la ligne
i" # insérer un guillemet
Esc # retour mode normal
A" # ajouter guillemet en fin de ligne
Esc # retour mode normal
j # ligne suivante
q # arrêter l'enregistrement
99@a # appliquer aux 99 lignes suivantesRegistres
# Types de registres
"a # registre nommé 'a'
"+ # presse-papier système
"* # sélection primaire (Linux)
"0 # dernier yank
"1-9 # dernières suppressions
"/ # dernière recherche
# Utilisation
"ayy # copier la ligne dans le registre 'a'
"ap # coller depuis le registre 'a'
"+yy # copier dans le presse-papier système
"+p # coller depuis le presse-papier système
# Voir les registres
:reg # afficher tous les registres
:reg a # afficher le registre 'a'Astuces et productivité
Configuration de base
# ~/.vimrc
" Numéros de ligne
set number
set relativenumber
" Recherche
set hlsearch
set incsearch
set ignorecase
set smartcase
" Indentation
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set smartindent
" Interface
set showcmd
set showmode
set ruler
set wildmenu
set laststatus=2
" Comportement
set backspace=indent,eol,start
set scrolloff=5
set mouse=a
syntax on
filetype plugin indent onAide intégrée
# Accéder à l'aide
:help # aide générale
:help commande # aide sur une commande spécifique
:help i_CTRL-N # aide sur Ctrl+N en mode insert
:helpgrep motif # rechercher dans l'aide
# Navigation dans l'aide
Ctrl+] # suivre un lien
Ctrl+o # retourQuick Reference
| Action | Commande |
|---|---|
| Sauvegarder et quitter | :wq ou ZZ |
| Quitter sans sauver | :q! ou ZQ |
| Supprimer une ligne | dd |
| Copier une ligne | yy |
| Coller | p |
| Annuler | u |
| Refaire | Ctrl+r |
| Rechercher | /motif |
| Remplacer tout | :%s/old/new/g |
| Aller à la ligne N | :N ou NG |
| Début du fichier | gg |
| Fin du fichier | G |