Vim utilise plusieurs modes: le mode “normal”, qui permet d’entrer des commandes, le mode insertion, qui permet de taper du texte, et le mode visuel, qui permet de sélectionner une partie du texte. A l’ouverture, vim se trouve dans le mode normal, vous ne pouvez donc pas taper de texte.
Vim offre un tutoriel intégré qui peut être lancé en tapant vimtutor
dans un terminal.
Commandes de base
i
: passer en mode insertion avant le curseurI
: passer en mode insertion au début de la ligne courante. En sélection par blocs cela permet d’insérer du texte au début de chaque ligne.a
: passer en mode insertion après le curseurA
: passer en mode insertion à la fin de la ligne couranteo
: insérer une nouvelle ligne sous la ligne actuelle et passer en mode insertionO
: insérer une nouvelle ligne au dessus de la ligne actuelle et passer en mode insertion<echap>
: passer en mode normalv
: passer en mode visuelV
: selectionner par lignes<Ctrl>v
: selectionner par bloc:w (<nom>)
: enregistrer (sous):q
: quitter vim:q!
: quitter vim sans enregistrer (sinon il ne vous laisse pas partir):wq
: enregistrer et quitter vim
Toutes les commandes qui commencent par :
doivent être validées par <Entrée>
.
Opérateurs de movement
gg
: déplacer le curseur au début du documentG
: déplacer le curseur à la fin du documenth
: déplacer le curseur vers la gauchej
: déplacer le curseur vers le bask
: déplacer le curseur vers le hautl
: déplacer le curseur vers la droite
Vous pouvez aussi utiliser les flèches.
b
: déplacer le curseur au début du mot actuele
: déplacer le curseur à la fin du mot actuelw
: déplacer le curseur au début du mot suivant0
: déplacer le curseur au début de la ligne$
: déplacer le curseur à la fin de la ligne
Pour se déplacer plus rapidement vous pouvez entrer un nombre de fois que vous
voulez utiliser la commande. Par exemple 3j
déplacera le curseur 3 lignes
plus bas. Une exception est pour G
, le nombre indiquant la ligne à laquelle
vous voulez placer le curseur. Ainsi 5G
placera le curseur au début de la 5e ligne.
Ces opératurs peuvent être utilisés après certaines commandes pour indiquer quelle portion de texte elles affectent (voir exemples dans la section suivante).
Supprimer / Couper / Coller
En mode normal, dès que vous supprimmez un / des caractères, le presse-papier de vim est réécrit. Attention à ne pas perdre ce que vous vouliez copier.
x
: supprimer un caractèrer
: remplacer un caractère par le prochain caratère saisi (ne modifie pas le presse-papier)R
: remplacer des caractères par les prochains caratères saisis,<echap>
pour finir (ne modifie pas le presse-papier)ce
: supprime la fin du mot et vous place en mode insertionc$
: supprime la fin de la ligne et vous place en mode insertiondd
: supprimer une ligne, l’équivalent de “couper”yy
: copier une ligne
Les opérateurs de mouvement peuvent être utilisés avec les commandes couper / copier. Exemples:
d3j
: supprime 3 lignes en partant de l’emplacement du curseur et les place dans le presse-papierygg
: copie les lignes du début du document jusqu’à celle du curseury$
: copie du curseur jusqu’à la fin de la ligne
En mode visuel, il suffit d’appuyer sur d ou y pour appliquer la commande à la sélection.
Pour coller:
p
: insère le contenu après le curseur (ou sur une nouvelle ligne si on a copié une ligne)P
: insère le contenu avant le curseur (ou sur une nouvelle ligne si on a copié une ligne)
Pour utiliser les registres du système au lieu de celui de vim, il faut le préciser
au début de la commande:
"+
: représente le presse-papier système (par exemple si vous avec fait CTRL+C sur une autre application)"*
: représente la sélection primaire, ce qui est considéré comme sélectionné et qui peut être collé avec un clic de molette sur linux<ctrl><alt>v
: équivalent de"+p
mais en mode insertion<ctrl><alt>c
: en mode visuel, équivalent de"+y
mais copie la sélection au lieu de copier la ligne entière
Annuler
u
: annuler la dernière modification<ctrl>r
: rétablir les modification annuléesU
: annuler les modifications de la dernière ligne modifiée
NB: l’historique des annulations n’est modifié que par u
(minuscule).
U
est considéré comme une commande qui rétablit l’état d’une ligne et peut être
annulé avec u
ou U
.
Ouvrir des fichiers
:e <nom>
: ouvrir le fichier (ferme celui que vous êtes en train d’éditer):sp <nom>
: ouvre le fichier dans un nouveau split horizontal:vsp <nom>
: ouvre le fichier dans un nouveau split vertical<ctrl>w <direction>
: changer de split vers la direction<ctrl>w+
: agrandit le split actif d’une ligne (pour les splits horizontaux)<ctrl>w-
: réduit le split actif d’une ligne (pour les splits horizontaux)<ctrl>w>
: agrandit le split actif d’une colonne (pour les splits verticaux)<ctrl>w<
: réduit le split actif d’une colonne (pour les splits verticaux)
Ouvrir plusieurs fichiers dans une même instance de vim permet de partager le presse-papier et l’autocomplétion entre les fichiers.
Chercher et remplacer
/<pattern>
: rechercher un pattern
Une fois que la recherche est validée avec <Entrée>
:
n
: aller à l’occurence suivanteN
: aller à l’occurence précédente:s/<ancien>/<nouveau>/[cgi]
: remplacer les occurences depar sur la ligne
c, g et i sont des options:
c
: demande une confirmationg
: pour ne pas s’arreter au premier remplacementi
: pour ne pas prendre en compte la casse (Majuscules / minuscules)
On peut aussi préciser un groupe de ligne ou tout le fichier pour effectuer le remplacement.
Exemples :
:7,19s/foo/bar/g
remplace foo par bar à toutes les occurences entre les lignes 7 et 19.:%s/foo/bar/g
remplace foo par bar dans tout le fichier