Vim (ou vi) est un éditeur de texte en console. Il à la réputation d'être le plus puissant mais sa prise en main n'est pas des plus intuitive, du moins au début. Je ne vais pas vous mentir, je ne l'utilise que très rarement et je lui préfère souvent Nano pour sa simplicité.
Néanmoins toute personne qui s'intéresse sérieusement à Linux, à la ligne de commande et même à la programmation en général devrait s'y pencher.
Les quelques explications que vous trouverez ci-dessous apporteront peu de choses à ce qui est expliqué dans le tutoriel intégré à Vim (vimtutor) que je vous invite à suivre par vous même.
Dans un terminal tapez:
$ vimtutor
et suivez le guide!
Mode interactif:
C'est le mode par défaut quand on ouvre Vim. Ce mode n'est pas fait pour écrire du texte mais il permet de se déplacer dans le fichier, de copier/coller et de faire quelques modifications.
On active se mode en appuyant sur la touche [ESCAPE] du clavier.
Mode insertion:
C'est le mode classique pour entrer du texte. Pour activer ce mode il suffit de d'appuyer sur la touche [i] et pour en sortir il suffit de basculer en mode interactif en pressant la touche [ESCAPE].
Voir plus bas : Commande d'ouverture et mode d'insertion
toutes ces actions se font en mode interactif
Simple déplacement: touches h,j,k,l (ou touches fléchés)
^
k
< h l >
j
v
Enregistrer
:w
Quitter
:q
Enregistrer et quitter
:wq
ou
:x
Quitter sans enregistrer
:q!
Mode insertion avant le curseur
i
Mode insertion après le curseur
a
Mode insertion en fin de ligne
Quel que soit la position du curseur, la commande A se comportera comme "i" mais se placera à la fin de la ligne.
A
Créer une nouvelle ligne en dessous de celle ou se trouve le curseur et passer en mode insertion
o
Créer une nouvelle ligne au dessus de celle ou se trouve le curseur et passer en mode insertion
O
Supprimer le caractère sous le curseur en mode interactif
x
Opérateur effacement "d"
Supprimer une suite de caractères depuis le curseur jusqu'au prochain espace inclus
dw
Supprimer une suite de caractères depuis le curseur jusqu'au dernier caractère avant le prochain espace
de
Supprimer le reste d'une ligne à partir du curseur
d$
Supprimer le début d'une ligne jusqu'au curseur
d0
Supprimer toute une ligne quelque soit l'emplacement du curseur
dd
Couper avec un quantificateur de mouvement
Un quantificateur de mouvement est un nombre que l'on ajoute avant une commande ou un opérateur pour indiquer à Vim le nombre de fois qu'il devra répéter l'opération
Supprimer 4 lignes depuis celle ou se trouve le curseur
4dd
Supprimer deux lignes en commençant depuis le curseur
2d$
Remplacer un caractère par un autre, placer le curseur sur le caractère à remplacer (dans l'exemple on souhaite remplacer un caractère par un s
rs
Le fait d'appuyer sur r minuscule bascule Vim en mode remplacement jusqu'à ce que l'on presse une touche (dans l'exemple "s") et revient en mode interactif.
Remplacer un caractère et effacer le suivant. Chaque nouveau caractère tapé ne décale pas la ligne mais supprime au fur et à mesure les caractères suivants.
R
Contrairement à "r", "R" entre dans le mode de remplacement et n'en sortira que quand on pressera la touche [ESCAPE]
"c" s'utilise comme "d" mais il entre en mode de remplacement et n'en sortira que quand on pressera la touche [ESCAPE]
"c" s'utilise avec un opérateur de mouvement.
Effacer un mot et entrer dans le mode insertion, taper du texte ...
ce<taper du texte>[ESCAPE]
Remplacer la fin d'une ligne: (placer le curseur à l'endroit ou l'effacement doit commencer)
c$<taper du texte>[ESCAPE]
Remplacer 3 mots
c3w<taper du texte>[ESCAPE]
Opérateur de copie "y"
Copier une ligne ou que soit le curseur sur celle-ci
yy
Copier une suite de caractères du curseur jusqu'au prochain espace
yw
Copier du curseur jusqu'à le fin de la ligne
y$
Copier du curseur jusqu'au début de ligne
y0
Opérateur de copie "y" et quantificateur de mouvement
Copier 4 lignes
4yy
Copier 3 mots depuis le curseur
3yw
Sélectionner et copier en mode visuel
Positionner le curseur au début du texte à copier et entrer en mode visuel "v" (voir : mode visuel)
v
Déplacer le curseur jusqu'à la fin du texte à copier (h,j,k,l) puis copier grâce à "y"
y
Coller ce qui viens d'être coupé ou copier
p
Coller 4 fois ce qui viens d'être copier
4p
On peut aussi appuyer 4 fois sur la touche p
pppp
Annuler la dernière commande
u
Il suffit de taper plusieurs fois "u" pour annuler une à une les dernières commandes
Annuler toutes les commandes faites sur une même ligne
U
Annuler l'annulation
CTRL R
Recherche classique
Rechercher un texte
/<texte à chercher>
Rechercher à nouveau ce même texte (de haut en bas)
n
Rechercher à nouveau ce même texte (de bas en haut)
N
Pour rechercher du texte directement dans la direction opposée (de bas en haut), utilisez ? au lieu de /
Recherche de couple
Rechercher des couples de ( ), [ ] ou { }
Placer le curseur sur une parenthèse (ouvrante ou fermante peu importe) puis taper % pour positionner le curseur sur sa sœur
%
Chaque fois que l'on tapera % le curseur se placera alternativement sur la parenthèse ouvrante ou fermante.
Rechercher remplacer (commande de substitution)
Remplacer la première occurrence par une autre dans la ligne ou se trouve le curseur. Ou que soit le curseur dans la ligne, seule la première occurrence de cette ligne sera modifiée
:s/ancien/nouveau
Remplacer toutes les occurrences de la ligne ou se trouve le curseur
:s/ancien/nouveau/g
Remplacer toutes les occurrences d'une suite de lignes, dans l'exemple les lignes 101,102,103 et 104 sont concernées
:101,104s/ancien/nouveau/g
Remplacer toutes les occurrences dans tout le fichier
:%s/ancien/nouveau/g
Remplacer toutes les occurrences du fichier avec demande de confirmation ou d'infirmation
:%s/ancien/nouveau/gc
L'appui de la touche [v] démarre la sélection Visuelle. Vous pouvez déplacer le curseur pour agrandir ou rétrécir la sélection. Puis vous pouvez utiliser un opérateur pour faire quelque chose sur le texte. Par exemple, "d" efface le texte.
Enregistrer une sélection dans un fichier:
Placez le curseur là ou vous souhaitez commencer à sélectionner
Taper "v" puis déplacer le curseur (h,j,k,l) jusqu'à la fin de la sélection.
Taper ":" pour finir la sélection. :'<,'> va apparaître.
Taper "w mon_fichier [ENTRER]"
Un fichier "mon_fichier" est créé dans le répertoire courant et contient le texte de la sélection.
Récupération et fusion de fichier
Incruster le contenu d'un fichier dans le fichier courant
:r emplacement/autre/fichier
Récupération et fusion de sortie de commande
Incruster la sortie de la commande ls
:r !ls
Scinder en 2 l'écran horizontalement pour le même fichier courant
:sp
Scinder en 2 l'écran verticalement pour le même fichier courant
:vsp
Spliter l'écran pour un autre fichier
:sp autre_fichier
Les raccourcis pour se déplacer d'un "viewport" à un autre
Naviguer de viewport en viewport
CTRL-W
Aller vers un viewport précis
CTRL-W [h,j,k,l]
Agrandir le viewport actuel
CTRL-W +
Réduire le viewport actuel
CTRL-W -
Egaliser la taille des viewport
CTRL-W =
Échanger la position des viewport
CTRL-W r
Idem avec R mais en sens inverse
Fermer le viewport actuel
CTRL-W q
Lancer une commande shell
:![commande]
Faire un ls depuis Vim
:!ls
Syntaxe des options pour la session courante
Activer une option
:set [option]
Désactiver une option
:set [nooption]
Activer une option avec valeur
:set [option=valeur]
Connaître l'état d'une option
set [option]?
Quelques exemples
Activer l'option "ignorer la casse"
:set ic
Lors d'une recherche, mettre les occurrences trouvées en surbrillance
:set hls is
ic => "ignorecase" pour ignorer la casse lors des recherches.
is => "incsearch" pour montrer les appariements partiels.
hls => "hlsearch" pour mettre en surbrillance les appariements.
Retirer la surbrillance des résultats
:nohlsearch
Ignorer la casse seulement pour la recherche courante
/<mot_a_chercher>\c
Ouvrir le fichier d'aide
:help
ou touche [F1]
Aller de page en page
CTRL-W
Fermer la fenêtre d'aide
:q
Argumenter help
:help w
:help c_CTRL-D
:help c_<T
:help insert-index
:help user-manual
Fichier de configuration global de Vim
# /etc/vim/vimrc
Fichier de configuration utilisateur de Vim
$ ~/.vimrc
si ce fichier n'existe pas il est possible de copier celui du répertoire de configuration global
Activer la coloration syntaxique
Dans le fichier .vimrc dé-commentez la ligne
syntax on
Si votre arrière plan est plutôt sombre commentez la ligne
set background=dark