Mémento Vi et autres éditeurs compatibles.
Mode commandes et mode insertion
Vi a plusieurs modes interactifs avec l'utilisateur pour lui permettre
d'intervenir sur un texte :
- le mode insertion ou édition qui permet de modifier le texte
- le mode commandes qui permet d'interagir avec Vi lui même et de
lancer des commandes qui vont sauvegarder, ouvrir, ... des documents,
des commandes propres à certains éditeurs Vi (le multi-fenétrage
pour ViM, par exemple), modifier le texte par des commandes
ex
On passe du mode commandes au mode insertion par la commande 'i' (ou 'a'
ou 'o' ou ... voir le mode commandes pour plus de précisions) et du
mode insertion vers le mode commande en pressant la touche 'Esc' du
clavier.
Mode commandes
- a insère aprés le caractère courant
- i insère avant le caractère courant
- o insère une nouvelle ligne après la ligne courante
- O insère une nouvelle ligne avant la ligne courante
- dd supprime la ligne courante
- d$ supprime du curseur jusqu'à la fin de la ligne
- d^ supprime du début de la ligne à la position du curseur
- dw supprime le mot courant
- d/REGEX supprime du curseur jusque l'expression REGEX
- x supprime le caractère courant
- X supprime le caratrère suivant
- cc remplace la ligne courante
- c$ remplace jusque la fin de la ligne courante
- cw remplace le mot courant
- c/REGEX remplace du curseur jusque l'expression REGEX
- r remplace le caractère courant
- R passe en mode remplacement à partir du caratère courant
- yy copie la ligne courante
- yw copie le mot courant
- y/REGEX copie du curseur jusque l'expression REGEX
- y$ copie jusqu'à la fin de la ligne
- p colle après le caractère courant
- P colle avant le caractère courant
- :w [file] sauvegarde dans file
- :wq sauvegarde dans le fichier courante qui quitte Vi
- :q! quitte sans sauvegarder
- l déplace le curseur d'un caractère vers la droite
- k déplace le curseur d'une ligne vers le haut
- j déplace le curseur d'une ligne vers le bas
- h déplace le curseur d'un caractère vers la gauche
- X [commande] exécute X fois la commande
- /REGEX recherche la prochaine occurence REGEX
- ^REGEX recherche la précédente occurence
REGEX
- . répète la derniere commande
- J associe la ligne suivante à la ligne courante
Commandes ex
- :% s/e/a/g change les e en a sur tout le texte
- :,$ s/r/e/ change le premier r de chaque ligne depuis la ligne courante jusqu'à la fin du texte en e
- :^,34 y copie dans le buffer de la première ligne à la ligne 34
- :,/REGEX s/toto/tata/g remplace toto par tata
- :% ! commande envoie tout le texte à une commande externe et affiche le retour de la commande en lieu et place
jusqu'à l'occurence REGEX
- :?REGEX,/REGEX2 s/a/e/g change toute a en e depuis la précédente expression REGEX jusque
la prochaine expression REGEX2
- :56 déplace le curseur courant à la ligne 56
- :% s/^first/second/ change first en second lorsqu'il est le premier mot d'un ligne
Configuration
- :set cindent indente le code C automatiquement (ViM
seulement)
- :set tw=X définit la longueur de la ligne par défaut (Vim seulement)
- :set wraplen=X définit la longueur de la ligne par défaut (Vi)
- :set autoindent mode d'indentation automatique
- :set all affiche toutes les options
- :set noOPTION annule ou désactive une option
- :set nocompatible travaille dans un mode qui n'est pas
forcément compatible avec Vi (Vim seulement)
- :set history=10 conserve les dix dernières commandes dans
l'historique (Vim seulement)
Gestion du multi-fenetrage sous ViM
- :split [file] coupe l'écran en deux fenêtres et place le curseur
sur celle du haut, si [file] est précisé le fichier file est ouvert
dans la nouvelle fenêtre. En rajoutant un chiffre devant split, on
détermine en nombre de ligne la taille de la fenêtre (:4split ouvre
une fenêtre de 4 ligne)
- CTRL-W n équivalent a :split
- :new ouvre une nouvelle fenêtre vide
- :close ferme la fenêtre courante (on peut utiliser aussi
:q ou ZZ)
- CTRL-W w passe d'une fenêtre à la suivante (on peut
aussi utiliser CTRL-W CTRL-W
- :only ferme toutes les fenêtre sauf la fenêtre
courante (si une modification n'a pas été sauvegardé, ViM affiche
un message d'erreur)
- CTRL-W + | - augmente ou diminue le nombre de lignes pour la
fenêtre courante
- [0-99] CTRL-W _ déplace le haut de la fenêtre à la
ligne indiquée
- :vsplit coupe l'écran dans le sens vertical
- :vertical new coupe l'écran dans le sens vertical et crée
une nouvelle fenêtre vide
- CTRL-W h | j | k | l déplace le curseur dans la fenêtre
à gauche, à droite, en haut ou en bas
- CTRL-W t | b déplace le curseur la fenêtre suivante vers
le haut (top) ou le bas (bottom)
- CTRL-W H | J | K | l déplace la fenêtre courante tout en haut,
tout à gauche, droite ou tout en bas de la console
- :qall quitte toutes les fenêtres, fonctionne aussi avec
:wall (qui sauvegarde toutes les fenêtres), :wqall (sauvegarde et
quitte toutes les fenêtres), ...
- vim -o file1 file2 ... lance ViM et une fenêtre par
fichier
Utilisation de :map sous ViM
- :map g ibonjour<ESC> passe en mode insertion, tape le mot
'bonjour' et repasse en mode commande lorsque l'utilisateur presse la
touche 'g' (en mode commande).
- :man <F2> o\item <ESC> ajoute une ligne après
le curseur courant, tape '\item' et repasse en mode commande lorsque
l'utilisateur presse la touche F2.
- :unmap <F2> unmap la touche F2.