Skip to Content
CLI✏️ Vim

✏️ 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.

ModeToucheDescription
NormalEscMode par défaut, pour naviguer et exécuter des commandes
Inserti, a, oMode d’insertion de texte
Visualv, V, Ctrl+vMode 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+[

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 ligne

Mouvements 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 insert

Combinaisons 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 motif

Text 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 accolades

Mode 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 casse

Sé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 changements

Recherche 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 temporairement

Commandes 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êtres

Macros

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 suivantes

Registres

# 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é

Répéter des actions

. # répéter la dernière action ; # répéter la dernière recherche f/t , # répéter f/t en sens inverse # Exemple : supprimer tous les mots "foo" /foo # rechercher "foo" dw # supprimer le mot n # aller au suivant . # répéter la suppression

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 on

Aide 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 # retour

Quick Reference

ActionCommande
Sauvegarder et quitter:wq ou ZZ
Quitter sans sauver:q! ou ZQ
Supprimer une lignedd
Copier une ligneyy
Collerp
Annuleru
RefaireCtrl+r
Rechercher/motif
Remplacer tout:%s/old/new/g
Aller à la ligne N:N ou NG
Début du fichiergg
Fin du fichierG