10/13/2020 Move fast with vim!
Préalable
La faculté de mouvement, dans vim, est séparée de l'édition de texte par les
touches Esc
pour en sortir, et par diverses touches comme i
(insert) pour y
entrer. Passer d'une faculté à l'autre, càd faire l'aller retour entre i et Esc,
peut sembler fastidieux.
Pour éviter cette lourdeur, on peut remap la touche Esc sur une autre
combinaison de touches. kj
est une possibilité. Capslock
en est une autre.
# dans .vimrc par ex
# ino signifiant les 2 modes insert + normal
inoremap kj <esc>
Basiques
Le hjkl
est la base, toujours gardée sous la main. Ils permettent le mouvement
simple, horizontal et vertical.
Le compteur vient étendre ce mouvement: 5j
me mène 5 lignes plus bas.
Bien connaître le mouvement dans vim, c'est ensuite pouvoir le combiner à des
actions: par exemple, d5j
me supprime les 5 lignes qui suivent celle où je me
trouve (laquelle est aussi supprimée).
On en ferait un jeu d'aventure !
Mouvement sur la ligne
On utilise 0
(ou ^
) et $
pour aller au début ou à la fin de la ligne.
On utilise couramment w/W
pour sauter de mot en mot. W
permet de ne pas
prendre ( { . et tels autres caractères pour des mots. Dans le sens arrière, on
utilise b/B
. Ainsi arrivé au pied d'un mot, on passe à la fin avec e/E
Les compteurs s'utilisent par là dessus, et 3w
devient : avancer de 3 mots.
Dans la ligne (ou plus loin du reste) on peut avoir repéré un mot, et vouloir
s'y rendre : on utilise /lemot
et n/N
pour naviguer entre ses occurences
éventuelles.
Vim a de la mémoire, et /Enter
rappelle la dernière recherche. Si la chose
cherchée est la même que sous le curseur, \
* suffit simplement pour trouver la
prochaine occurence.
Note, avec /
on va toujours chercher devant, avec ?
on recherche derrière.
Toujours sur la ligne, même chose pour un caractère avec f
(ou F
pour
rejoindre un caractère qui précède le curseur) : f"
par exemple, vous mène au
prochain '"'. On utilise ;/,
pour passer d'une occurence à l'autre.
Quasi synonyme de f/F, on trouve t/T
(devant signifier 'til) pour arrêter le
curseur juste avant
le caractère recherché.
Mouvement vertical
On utilise H/M/L
(high, middle, low) pour le déplacement sur l'écran. On
utilise gg/G
pour le déplacement vers la première ou la dernière ligne du
fichier.
Le compteur est couramment employé en conjonction avec les numéros de lignes
visibles à gauche. On m'enmène à la ligne 18 avec la commande 18gg
ou 18G
.
Ce qui est donc pratique, en mode visuel (Ctrl + V) pour sélectionner une portion comprise entre deux lignes déterminées.