Accueil > Informatique [computer science] > Linux > Vim (Vi IMproved)
Mis à jour le 22 juin 2022
Vim (Vi IMproved)
Editeur de texte modal en ligne de commandes
samedi 24 mai 2014, par
Modes
Vim est un éditeur modal. Il démarre en mode Normal, auquel on peut toujours revenir avec la touche Echap
.
-
v
pour passer en mode Visuel : on peut alors utiliser les touches de déplacement pour faire une sélection. -
i
pour passer en mode Insertion à l’endroit où l’on est. -
R
pour passer en mode Remplacement à l’endroit où l’on est (r
permet de remplacer une seule lettre), -
:
pour passer en mode Commande. -
CTRL+z
pour suspendre Vim et revenir au shell. Puisfg
pour revenir dans Vim.
Mode Normal
-
h, j, k, l
pour aller à gauche, en bas, en haut, à droite (on peut aussi utiliser les flèches), -
0
et$
pour se déplacer en début et fin de ligne, -
w
pour se déplacer au début du mot suivant, -
b
pour se déplacer au début du mot courant ou précédent, -
e
pour se déplacer à la fin du mot courant, -
w
,b
ete
peuvent être précédé d’un nombre : par exemple3w
pour avancer de trois mots, -
(
pour se déplacer au début de la phrase courante ou précédente (une phrase se termine par un point, point d’exclamation, d’interrogation, ou points de suspension, suivi d’une espace), -
)
pour se déplacer au début de la phrase suivante, -
%
pour se déplacer à la parenthèse, accolade ou crochet fermant, -
gg
pour revenir au début du document, -
G
pour aller à la fin du document, -
CTRL g
pour afficher la position dans le fichier (emplacement du fichier, ligne, colonne, pourcentage...), -
CTRL u
etCTRL d
pour se déplacer d’un demi-écran vers le haut ou le bas, -
zz
pour placer la ligne courante au centre de la fenêtre, -
ZZ
pour sauvegarder et quitter, -
20G
pour aller à la ligne 20, -
.
(ou:redo
) permet de répéter la dernière commande,3.
pour répéter trois fois, -
gUaw
,gUas
,gUap
pour mettre en majuscule le mot courant, la phrase ou le paragraphe. -
q/
etq:
pour afficher respectivement l’historique des recherches et des commandes Ex.
Effacer, couper, copier, coller
-
x
ouSuppr
pour effacer un caractère, -
d
pour supprimer la sélection, -
dd
pour supprimer (couper) une ligne (5dd
pour en couper cinq), (d’une façon générale une commande tapée deux fois commedd
s’aplique à la ligne courante) -
dw
pour effacer la fin d’un mot (et l’espace qui suit),d3w
pour effacer trois mots... -
daw
(delete a word) pour effacer le mot sous le curseur,das
pour la phrase (sentence),dap
pour le paragraphe, -
dE
pour effacer la fin d’un mot, y compris la ponctuation qui suivrait, -
db
pour supprimer le début du mot (caractères avant le curseur), -
d0
pour supprimer tous les caractères de la ligne situés avant le curseur, -
d$
pour supprimer tous les caractères de la ligne situés après le curseur, -
p
permettra de coller la ligne supprimée après celle où est situé le curseur, avecP
ce sera avant,3p
collera trois fois la ligne, -
y
,yw
,yE
,yb
,y0
,y$
,yy
fonctionnent de la même façon mais pour copier (yank to register => yank signifie arracher), -
u
pour annuler la dernière modification (CTRL+R
pour la refaire),3u
pour les trois dernières modifications, -
U
pour annuler toutes les modifications sur la ligne en cours, -
"add
pour couper une ligne dans le buffer a, et"ap
pour coller le contenu du buffer. On peut donc utiliser 26 buffers."Add
permet d’ajouter une ligne dans le buffer a au lieu de remplacer son contenu.:registers
permet de visualiser le contenu des registres utilisés.qaq
permet d’effacer le contenu du registre a.
Mode Insertion
-
i
ouInser
pour passer en mode insertion à l’endroit du curseur, -
I
pour passer en mode insertion au début de la ligne courante, -
A
comme Append pour passer en mode insertion à la fin de la ligne courante, -
o
pour insérer une ligne et passer en mode insertion, -
20i*[Echap]
pour insérer 20 étoiles,
Modifier la sélection visuelle
-
gu
ougU
pour mettre en minuscules ou majuscules.
Mode Commande
:x
ou:wq
pour sauvegarder et quitter,-
:q
pour quitter, -
:w
pour sauvegarder (avec éventuellement un nom de fichier derrière).:w %bis
permet de sauvegarder avec le même nom suivi de "bis" (le signe % représente le nom actuel du fichier). -
:e!
pour tout annuler et revenir à la dernière version enregistrée, (le point d’exclamation permet de forcer la commande pour ne pas avoir d’avertissement), -
:e nomfichier
pour charger et éditer un fichier, -
:q!
pour tout annuler et quitter. -
:earlier 2m
pour récupérer le fichier tel qu’il était il y a deux minutes (s pour secondes, h pour heures).:later
pour se déplacer dans l’autre sens. -
:r nomfichier
pour insérer le contenu d’un autre fichier, -
:!commande
pour lancer une commande externe (par exemple:!ls
). Si elle est précédée d’une sélection, la commande agit comme filtre : son résultat remplace la sélection. -
:read !commande
pour exécuter une commande shell et récupérer son résultat sous le curseur, -
:'<,'>read !commande
pour envoyer la sélection à une commande shell, -
TAB
pour l’autocomplétion, -
:tabe nomfichier
pour éditer un fichier dans un nouvel onglet, -
:tabn
ou:tabp
pour passer à l’onglet suivant ou précédent (on peut également sélectionner l’onglet à la souris), -
:vert diffsplit fichier2
pour comparer le fichier courant avec un deuxième fichier, - Agir sur une portion du fichier :
-
:20
pour aller ligne 20,$
pour aller à la fin du fichier -
:2,5y
pour copier les lignes 2 à 5, -
:.,$y
pour copier de la position courante à la fin du fichier, -
:'<,'>y
pour copier la sélection visuelle, -
:%y
pour copier tout le fichier.
-
-
:t6
(copy to) pour copier la ligne courante vers la ligne 6, -
:6t.
(copy to) pour copier la ligne 6 vers la ligne courante, -
:m6
(move) pour déplacer la ligne courante vers la ligne 6. -
:source batch.vim
pour exécuter un script Vim. -
CTRL+r CTRL+w
pour récupérer le mot courant dans la zone commande. -
CTRL+d
pour afficher une proposition de complétion automatique (toucheTAB
), -
:%normal A;
pour exécuter une commande du mode Normal (iciA;
) et l’appliquer à toutes les lignes du fichier (%
). -
@:
pour répéter la dernière commande (ensuite @@),
Rechercher, remplacer
-
/mot[Entrée]
pour chercher un mot vers l’avant,?mot[Entrée]
vers le haut. On peut utiliser des expressions régulières, par exemple : /[Vv]im -
n
pour le suivant,N
pour le précédent, -
*
et#
pour chercher la prochaine occurrence du mot sous le curseur, respectivement en avant et en arrière, -
:%s/mot/remplaçant/
pour remplacer la première occurence sur chaque ligne. Ajouter l’optiong
à la fin pour toutes les occurrences (gc
pour le faire avec confirmation).%
définit la portée de la commande, ici tout le document (équivaut à1,$
). -
f
suivi d’un caractère pour trouver sa prochaine occurrence dans la ligne courante,F
pour la précédente, -
d/mot
pour tout effacer jusqu’au mot en question, -
:vimgrep /motif/ *.ext
pour rechercher un motif dans tous les fichiers portant cette extension.:clist
permet alors d’avoir la liste des occurrences.:cc 5
permettra d’aller à la cinquième occurrence. Pour une recherche récursive écrire**/*.ext
-
:abbrev Kub Kubuntu
pour définir une abréviation qui sera automatiquement remplacée par le deuxième argument.iabbrev
etcabbrev
permettent de définir des abréviations uniquement en mode insertion ou commande.
Découpage d’écran
-
:sp
pour découper (split) l’écran en deux parties (ou plus) l’une en dessous de l’autre. Peut-être suivi d’un nom de fichier à ouvrir dans la nouvelle fenêtre. -
:vsp
pour découper verticalement l’écran en deux parties (ou plus) l’une à côté de l’autre, -
CTRL w CTRL w
pour naviguer d’une vue (viewport) à une autre, -
CTRL w CTRL v
pour diviser en deux la fenêtre actuelle (séparation verticale), -
CTRL w
puisj, h, k
oul
pour se déplacer vers la vue située dans cette direction, -
CTRL w
puisr
ouR
pour inverser deux vues ou revenir à la position initiale,
Lancer Vim de différentes façons
-
vim -p *.ext
pour ouvrir plusieurs fichiers chacun dans un onglet, -
vim + nomfichier
pour ouvrir un fichier et se placer sur sa dernière ligne, -
vim +256 nomfichier
pour ouvrir un fichier et se placer sur la 256e ligne. -
vimdiff fichier1 fichier2
pour lancer vim et comparer deux fichiers,
Options
On peut personnaliser la configuration de vim avec le fichier ~/.vimrc
(ne pas mettre le :
en début de ligne). Pour prendre en compte les modifications de ce fichier sans sortir de vim, utilisez la commande :source ~/.vimrc
-
:set backup
permet d’avoir une copie de sauvegarde (dont le nom se termine par un ), -
:syntax on
pour activer la coloration syntaxique, -
:set number
pour afficher les numéros de ligne, -
:set showcmd
pour voir les commandes tapées, -
:set ruler
pour afficher les coordonnées du curseur en bas à droite, -
:set mouse=a
pour pouvoir utiliser la souris pour se déplacer ou sélectionner, -
:set option?
pour connaître l’état d’une option, -
:set nooption
pour désactiver une option,
Bibliographie
- D. Bodor, "Vim, le Vi amélioré : votre seul éditeur de texte, tout simplement", GNU Linux/Magazine France, HS34, janv./fév. 2008, p. 68-74.
- T. Colombo, "Préparer son système : configurer l’éditeur Vim", Linux Pratique HS22, p. 12-17, oct./nov. 2011.
- T. Colombo, "Je dois modifier un fichier de configuration !", Linux Pratique HS18, p. 59-63, juin/juil. 2010.
- D. Neil, Practical Vim - Edit Text at the Speed of Thought, 2e edition, The Pragmatic Programmers LLC, ISBN 978-1-68050-127-8, 2015.
- "Editer un fichier avec Vi (guide rapide)", Linux Pratique HS27, p. 76-77.
- Site officiel : http://www.vim.org
- Documentation en ligne : http://vimdoc.sourceforge.net/
- Un ebook sur Vim : http://vimebook.com/
- Deux vidéos pour "débuter de zéro avec Vim" : https://www.youtube.com/watch?v=JinFsXrOHao et https://www.youtube.com/watch?v=zdhNMiY6zfo
- Lancer le tutoriel intégré :
vimtutor fr