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.
| 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 |