Les commandes VIM les plus courantes

Les différents mode en Vim:

Visual mode

Visual line mode : SHIFT + V

Command mode

Replace mode

Pour remplacer plusieurs occurrences d’un mot sous le curseur (opération assez courante) voici les combinaisons de touche, supposons que vous vouliez remplacer toto par tata :

# mettre le mot sur toto
# appuyer sur * pour aller à la prochaine occurence
# faire ciw (change inner word) puis entrez tata puis ESC
# puis autant de fois que nécessaire : appuyer sur n pour aller à la prochaine occurrence puis . (recommencer la dernière action)

Remplacer un seul caractère (sous le curseur)

Apuyer sur ‘r’ et taper la nouvelle lettre

Passer en Replace mode

SHIFT + r , permet de taper en mode remplacement, les caractère tapés remplacent les précédents caractères.

Visual Char mode : pour y entrer appuyer sur v, ça permet de sélectionner du texte

Obtenir de l’aide sur une commande

:help <command>

Edit mode

Comment faire une commande en navigation mode puis revenir de suite en edit mode

#il faut faire CTRL + o en edit mode pour temporairement être en normal mode, pratique pour aller en fin de ligne et continuer à éditer par exemple, <CTRL>+o rentre en normal mode pour une commande.
<CTRL>+o

#copier un mot sous le curseur, le curseur est au début du mot
yw
#copier un mot même si le curseur n'est pas au début du mot
yaw
#pour les nom de variable préfixée par un $  (ex: $this), yaw ne suffira pas dans ce cas utiliser le big word W (SHIFT + w)
yaW

Changer la casse

Changer en minuscule ou en majuscule

 ~    : Changes the case of current character
 guu  : Change current line from upper to lower.
 gUU  : Change current LINE from lower to upper.
 guw  : Change to end of current WORD from upper to lower.<<utile
 guaw : Change all of current WORD to lower.              <<utile
 gUw  : Change to end of current WORD from lower to upper.<<utile
 gUaw : Change all of current WORD to upper.              <<utile
 g~~  : Invert case to entire line
 g~w  : Invert case to current WORD
 guG : Change to lowercase until the end of document.

Insert mode

Pour annuler une action, revenir sur normal mode en appuyant sur ESC ou CTRL+C, appuyer sur u en

Bouger une ligne vers le haut ou vers le bas

Il faut utiliser la commande move .

:m 12  //bouge le ligne courante vers la ligne 12
:m 0   //bouge vers le début du fichier
:m $   // bouge après la dernière ligne du fichier
:5,7m 21   //bouge les ligne 5 à 7 à la ligne 21

Recherche

Rechercher une chaîne de caractères

Pour chercher un mot le plus simple est de rentrer le slash et de tapez la chaine à chercher

/motachercher
#s'il y a plusieurs occurences, appuyer sur n pour passer au suivant et SHIFT + n pour le précédent

Pour naviguer dans les occurrences trouvées utiliser les touches # (chercher en arrière)et * chercher en avant.

Rechercher le mot sous le curseur

#placer le curseur sur le mot et *

Navigation mode

Naviguer dans Vim

CTRL + y : défile vers le haut d'une ligne
CTRL + e : défile d'une ligne vers le bas
CTRL + f : défile d'une page vers le bas
CTRL + b : défile d'une page vers le haut
CTRL + d : défile d'une 1/2 page vers le bas
CTRL + u : défile d'une 1/2 page vers le haut

Placement du curseur sur l’écran

# position du curseur haut,milieu et bas (bouge le curseur)
H, M , L
#centrage du curseur dans la vue (ne bouge pas le curseur)
zt, zb ou zz

Placement du curseur au sein d’une ligne

#aller au dernier caractère et être en mode édition
SHIFT + A
#aller au dernier caraxtère
$
#aller au premier caractère et être en mode édition
SHIFT + I
# aller au premier caractère et curseur sur le 1er caractère
^^
#aller au premier caractère et curseur avant le 1er caractère
SHIFT + 0

Navigation par mot

#déplacer de mot en mot
w
#déplacer de mot en mot reverse
b
#déplacer de mot en mot en plus rapide (d'espace en espace en fait)
SHIFT + w
#reverse
SHIFT + b
#aller à la fin d'un mot
e
#aller début d'un mot 
w

Navigation par bloc (paragraphe…)

#les paragraphes sont séparés par une ligne vide ou des accolades
{ ou }
# aller au matching brace, trouver le } correspondant le plus immédiat de {, marche pour ( et [
%
# vous pouvez en profiter pour sélectionner le texte entre la paire de {}
v%
#voir le } correspondant, pour cela activer une option
:set showmatch

#Comment aller au {{[ le plus proche lorsque vous n'êtes pas dessus
[{  ou [[ ou [(  
#pour trouver celui qui est au dessus. Pour celui du dessous
]} ou ]] ou ])

Navigation par marks (signets)

Les signets (marks) permettent de mémoriser une ligne avec un raccourci (register)

#enregistrer un mark (les mark sont spécifiques à un fichier)
me // e devient le raccourcis vers le marks
#naviguer au mark
`m  // backticks ou
'm  // apostrophe (ideaVim ne connait pas backtick je crois)
#lister les marks
:marks
#revenir à la position précédente
``

#Les jumps
vous pouvez rejouer les positions du curseur avec CTRL + i et CTRL + o
#lister les positions passées du curseur
:jumps


#  https://www.linux.com/news/vim-tips-moving-around-using-marks-and-jumps/

Copier Coller avec les registers sous Vim

Alors que la plupart des programmes ne disposent que d’une copie dans le clipboard, Vim en possède une dizaine, on se demande pourquoi par défaut ce n’est pas proposé dans les autres IDE.

Le registre par défaut est "", le contenu y est présent lorsque vous faites un d,c,s,x,y

" est utilisé pour accéder au register,

# utilisation basique copier coller, utilisez une lettre pour stocker le contenu copié
"ey // copier le contenu dans le register e y=yank
"ep // coller le contenu du register e
#voir les contenus des register
:reg
:reg e f h // que les registers cités

https://www.brianstorti.com/vim-registers/

Effacer avec VIM

Effacer et combinaison avec d’autre commandes

Effacer en avant ou en arrière

$ phrase exemple : "ceci est une phrase de pour illustrer le propos"
#curseur sur h de phrase
#effacer jusqu'à la lettre 'd'
dtd
#effacer en arrière jusqu'à 'u'
dTu
#effacer un mot sous le curseur, attention à la position du curseur, l'effacement se fait depuis le curseur jusqu'à la fin du mot
dw

#efface le mot entier quelque soit la position du curseur sur le mot
diw

#effacer le contenu à l'intérieur des parenthèses ou crochet ou accolade, remplacer <char> par (,{,[
di<char>

#effacer jusqu'à un caractère
dt<char>

Les sources:

https://opensource.com/article/19/2/getting-started-vim-visual-mode

Déplacer des lignes

Sans doute une de mes commandes préférée, vous pouvez bouger une ou des lignes, en absolue sans forcément depuis la position de votre curseur

#déplacer la ligne courante à la ligne 23
:m 23
:m 0
:m $

#déplacer un bloc
:m5,7m 21 // bouge block lignes 5à7 à la ligne 21

Déplacer des lignes en mode relatif

Lorsque vous avez activé le display des ligne en relatif, vous n’avez plus les numéros absolu cela peut être une gêne, mais il est possible de déplacer les lignes en relatif depuis la position de votre curseur.

#sélectionner votre ou vos lignes en mode visual block (SHIFT + V), taper :m, puis le nombre de ligne en relatif, donc pour déplacer en amont de une ligne
:'<,'>m-2 // oui -2 et pas -1
#remarquez la syntaxe assez compliquée avec les chevrons, ne vous en faites pas, ils se font automatiquement si vous vous placez en mode Visual Block

Visual block mode ou mode colonne

Le visual block mode est l’équivalent du mode colonne dans une EDI classique. Pour y basculer CTRL + v. un fois ceci fait, il faut sélectionner les lignes avec j. Exemple faire attention, l’exemple ci-dessous permet d’insérer sur toutes les lignes sélectionnées un même texte, mais c’est avec SHIFT + i qu’on va insérer et pas seulement i comme en mode normal.

#exemple de texte
Vim is a text editor
Vim is a text editor
Vim is a text editor
Vim is a text editor
#on veut ajouter great entre "a" et "text"
#curseur sur la première ligne et devant "text" puis CTRL + v
#j 4 fois, puis SHIFT + i, on insère "great", deux fois <ESC> pour sortir du visual block mode.
#pour effacer, sélectionner c'est intuitif.

Bonus : Utiliser vi sur la ligne de commande bash

Il est possible en faisant simplement une commande pour avoir la sensation d’être dans vi, le curseur ne change pas quelquesoit les modes.

set -o vi

Utiliser les macros en Vim

Les macros je n’ai pas besoin de vous expliquer, ce sont des suites d’actions que vous pouvez réappliquer

# démarrer l'enregistrement de la macro et lui assigner un raccourci lettre a
qa
....vous commandes
#arrêt de l'enregistrement de la macro vim
q
#exécuter votre macro
@a
#répéter l'exécution de votre macro

Pour faire de bonnes macros, il faut réfléchir un peu, si par exemple vous devez appliquer une action sur une liste (typique) commencer par placer votre curseur de façon tactique pour le début et la fin.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *