Aide mémoire VI

Avant propos

Je vous recommande la lecture du livre suivant: learning the vi Editor, aux éditions O'Reilly, qui m'a donné l'idée de ce récapitulatif.

Il s'agit juste de notes accumulées concernant VI. J'y ai noté seulement ce que je ne connaissais pas ou peu, quand je débutais sous VI. Je compte en rajouter au fur et à mesure.
Vous pouvez bien sur m'envoyer vos patch, si vous pensez qu'il y a matière à rajouter ou modifier.

Une version plus spécifique à vim est disponible.

Récapitulatif des commandes sous vi

Récapitulatif commandes vi
Commande Description
:e! réouvre le fichier vierge, toutes les modifications sont perdues
W avance de mot en mot sans ponctuation (comme E,B)
S remplace toute la ligne
"2p paste le 2eme buffer killé
cw/caw change la fin du mot courant/tout le mot courant
"1p u.u. restauration progressive de tous les buffers killés: faire défiler avec u.u.
xp inverse deux lettres
Y yank toute une ligne
I insère en début de ligne
s (ou cc_) efface une lettre et passe en insertion
3s efface 3 lettres et passe en insertion (souvent plus pratique que R)
S (ou cc) remplace toute la ligne
ea ajoute du texte à la fin d'un mot
2J joint deux lignes
X comme x mais efface le caractère précédent
^f scrolle vers le bas (Forward)
^b scrolle vers le haut (Backward)
^e scrolle d'une ligne vers le bas
^y scrolle d'une ligne vers le haut
z [return] met la ligne courante en haut de l'écran
z . met la ligne courante au centre de l'écran
z - met la ligne courante en bas de l'écran
2H vas en Haut, à la 2eme ligne en partant du haut
M va au Milieu
3L va en bas (Low), à la 3eme ligne en partant du bas
n| va à la nieme colonne de la ligne courante
( ) déplacement de phrases en phrases
{ } déplacement de paragraphes en paragraphes
[[ ]] déplacement de section en section (fonctions en C)
?pattern? recherche le pattern en arrière
:set nowrapscan évite de recommencer la recherche du début une fois en bas
`` revient où on était précédemment
80G aller à la ligne 80
d+ (ou dd) détruit ligne courante + suivante
dH / dL détruit jusqu'en haut / en bas de l'écran
d{ / 2d( détruit un paragraphe / 2 phrases
c/pattern remplace jusq'au pattern
cn répette recherche
vi -R file ouvre file en read-only
vi -r recover mode
"a7yy copie les 7 prochaines lignes dans le registre a
"Ay) rajoute une phrase dans a (majuscule)
"aP paste le buffer a
ma marque la position courante dans a
'a va à la ligne marquée
'' va en début de dernière ligne marquée
:set nu (number) numérote les lignes
:17,30 m 40 déplace (Move) les lignes 17 à 30 en ligne 40
:17,30 t 40 (ou co) copie (co) les lignes 17 à 30 en ligne 40
:17,18# affiche temporairement les lignes 17 à 18
:20,. m $ déplace les lignes 20 à la ligne courante à la fin du fichier
:340,$ w >> file ajoute les lignes suivant la ligne 340 à la fin de file
:10r file / :$r file / :0r lit file et l'insere dans le texte (ligne 10/fin/début)
:= affiche le nombre total de lignes
:/pattern/= affiche la première ligne qui matche le pattern
g/void/nu affiche toutes les lignes contenant le mot void, avec leur numéro de ligne
:n / :N fichier suivant / précédent
:e# switche à l'autre fichier (% fichier courant)
:%s/\(That\) or \( this \)/\2 or \1/ inverse les deux termes
/~n effectue la dernière recherche avec un n derrière
:1,10s/.*/(&)/ entoure les lignes 1 à 10 avec des parenthèses
\u \l dans un remplacement, met le caractère suivant en majuscule (upper) ou en minuscule (lower)
\U \L dans un remplacement, met le tout le texte suivant en majuscule (upper) ou en minuscule (lower). S'arrête avec \e ou \E
:%s/Fortran/\U&/ Fortran -> FORTRAN
:set ic ignore case
:%s/\<child\>/children/g fonctionne sur des mots
:g/^/ m0 inverse toutes les lignes d'un fichier
:1,10g/^/12,17 t $ copie 10 fois les lignes 12 à 17 à la fin du fichier
:so file interprète le fichier de commande (.exrc par exemple)
:!date execute date
:r !date exécute date et insère le résultat
:96,99!sort filtre les lignes 96 à 99 et les trie
!)command passe la phrase suivante avec la commande. Note: ne dois fonctionner qu'avec des lignes entières, en principe
!!sort trie la ligne courante
4!!sort trie les 4 prochaines lignes
:ab abrev long ajoute une abréviation
:unab abrev enlève une abréviation
:ab liste les abréviations
:map key sequence map une touche
:unmap key sequence unmap une touche
^v touche écrit une touche sans la valider (return par exemple)
:map! idem mais en mode insertion
:map #1 command map la touche F1
^"gD met ligne dans registre g
@g execute le contenu de g
ex - file1 < exscript execute le script sur file1
CTRL-T | CTRL-D indente déindente (mode insertion)
>> | << indente déindente (mode commande)
:set tabstop=8 :set shiftwidth=8 set les tabulations
:set list affiche les caractères imprimables
:5,20 l montre tout les caractères entre 5 et 20
:set showmatch montre les corespondances ( ) en mode insert
:set showmode affiche le mode dans lequel on est

Date de dernière mise à jour: 28 février 2007 à 10:27,