Maîtriser l'éditeur VI

ArticleCategory: [Kies een categorie voor je artikel]

Applications

AuthorImage:[Hier komt een kleine foto van jou]

[Foto of the Auteur]

TranslationInfo:[Info over schrijver(s) en vertaler(s)]

original in en Ben Y. Yoshino

en to fr Clément Junca

AboutTheAuthor

Ben Yoshinori Yoshino travaille à l'université de Hawaii. Sa page personnelle peut être visitée à http://www.eng.hawaii.edu/~ben/

Abstract:[een kleine samenvatting/beschrijving van het artikel]

Ceci est un tutoriel sur vi écrit par Ben Y. Yoshino. Son original peut être trouvé sur www.eng.hawaii.edu/Tutor/vi.html. Voici d'autre tutoriaux du même auteur: www.eng.hawaii.edu/Tutor/. Nous avons trouvé cet article surhttp://www.rootprompt.org/ et l'avons publié avec la permission de l'auteur.

L'éditeur VI est un éditeur en mode texte utilisé par beaucoup d'utilisateurs d'Unix. L'éditeur VI a des fonctionnalités puissantes pour aider les programmeurs. Cependant beaucoup d'utilisateurs évitent d'utiliser VI car les différentes possibilités les écrasent. Ce tutoriel est écrit pour aider les utilisateurs débutants à s'habituer à utiliser VI, mais contient aussi des sections destinées aux utilisateurs confirmés de VI. Des exemples sont donnés ; La meilleure façon d'apprendre est d'essayer ces exemples et de les adapter à vos cas personnels... Il n'y a pas de meilleure méthode que d'essayer par vous-même.

ArticleIllustration:[Titel-illustratie van het Artikel]

[VIM the edtitor]

ArticleBody:[Het eigenlijke artikel: zet hier teks en HTML codes]

Conventions

Dans ce tutoriel, les conventions suivantes seront utilisées :

^X représente un caractère de contrôle. Par exemple, si vous voyez :^d dans ce tutoriel, cela signifie que vous que vous devez appuyer sur la touche contrôle puis taper la lettre correspondante. Pour cet exemple, vous devez appuyer sur la touche contrôle puis taper d.

Avant de commencer

Cette section n'est pas utile pour les utilisateurs de Linux se servant d'un émulateur de terminal moderne tel que xterm, gnome-terminal, kvt, aterm. Avec ces terminaux la variable shell $TERM aura toujours par défaut la bonne valeur et vous n'aurez donc pas à vous en préoccuper.

L'éditeur VI utilise la fenêtre entière, donc il a besoin de savoir quel type de terminal vous utilisez. Quand vous vous connectez, wiliki (wiliki est le nom du serveur principal de l'université de Hawaii) peut vous demander quel type de terminal vous utilisez. Le prompt ressemble à ceci :

	TERM = (vt100)

Si vous savez que que votre terminal est un vt100 (ou un émulateur compatible vt100), tapez seulement "retour" quand vous vous connectez. Si vous avez un terminal hp,tapez "hp" puis tapez "retour". Si vous ne savez pas quel type de terminal vous utilisez, renseignez-vous ou demandez à quelqu'un de vous régler le type de terminal adéquat.

Si vous faites une erreur quand vous vous connectez en tapant un mauvais type de terminal, ne paniquez pas : déconnectez-vous. Vous pouvez taper les commandes suivantes pour définir les réglages :

Maintenant que le terminal est correctement réglé, nous sommes prêts à commencer avec VI.

Lancer l'éditeur VI

L'éditeur VI permet à l'utilisateur de créer de nouveaux fichiers ou d'éditer des fichiers existants. La commande pour lancer l'éditeur VI est vi, suivie par le nom de fichier. Par exemple, pour éditer le fichier nommé temporaire, vous devez tapez vi temporaire et ensuite retour. Vous pouvez lancer VI sans nom de fichier, mais quand vous voudrez sauvez votre travail, vous devrez indiquer plus tard à VI sous quel nom il devra le sauver.

Quand vous lancez VI pour la première fois, vous voyez un écran rempli de tildes (un tilde ressemble à ceci : ~) sur le côté gauche de l'écran. Les lignes vides au-delà de la fin du fichier sont montrées de cette manière. En bas de votre écran, si vous avez spécifié un nom de fichier existant, le nom et la taille de ce fichier sont affichés, comme ceci :

"nom_de_fichier" 21 lines, 385 characters
Si le fichier que vous avez spécifié n'existe pas, il vous est indiqué qu'il s'agit d'un nouveau fichier, comme ceci :
"newfile" [New file]
Si vous lancez VI sans nom de fichier, la dernière ligne de l'écran restera vide. Si l'affichage ne correspond à ces indications, votre terminal est sans doute mal réglé. Tapez :q et "retour" pour sortir de VI, et régler votre type de terminal.

Sortir de VI

Maintenant que vous savez entrer dans VI, ce serait une bonne idée de savoir en sortir. L'éditeur VI a deux modes et pour sortir de VI, vous devez être en mode commande. Appuyer sur la touche appelée "Escape" ou "Esc" (Si votre terminal n'a pas une une telle touche, essayez ^[, ou contrôle-[) pour passer en mode commande. Si vous êtes déjà en mode commande quand vous tapez "Escape", cela peut "biper", ne vous inquiétez pas, vous êtes encore dans le mode commande.

La commande pour quitter VI est :q. Une fois en mode commande, tapez deux points, et 'q', suivi de retour. Si votre fichier a été modifié d'une façon ou d'une autre, l'éditeur vous préviendra, et ne vous laissera pas quitter. Pour éviter ce message, la commande est :q!. Cela vous laisse quitter VI sans sauvegarder les changements.

Bien sûr, normalement dans un éditeur, vous devriez vouloir sauvegarder les changements que vous avez faits. La commande pour enregistrer le contenu de l'éditeur est :w. Vous pouvez combiner cette commande avec la commande pour quitter, soit :wq. Vous pouvez spécifier un nom de fichier différent pour sauver sous ce nom après le :w. Par exemple, si vous voulez sauvegarder le fichier sur lequel vous travaillez sous le nom nom_de_fichier_2, vous devez taper :w nom_de_fichier_2 et retour.

Une autre façon de sauver vos changements et quitter VI est la commande ZZ. Quand vous êtes en mode commande, taper ZZ est équivalent à :wq. Si des changements ont été faits dans le fichier, ils seront sauvés. C'est la façon la plus simple de quitter l'éditeur, avec seulement deux appuis de touches.

Les deux modes de VI

La première chose que beaucoup d'utilisateurs apprennent à propos de l'éditeur VI est qu'il a deux modes: commande et insertion. Le mode commande permet l'entrée de commandes pour manipuler du texte. Ces commandes sont en général longues d'un ou deux caractères, et peuvent être entrées en peu de frappe de touche. Le mode insertion met tout ce qui est tapé sur le clavier dans le fichier courant.

VI démarre en mode commande.Plusieurs commandes mettent l'éditeur VI en mode insertion. Les commandes les plus couramment utilisées sont a et i. Ces deux commandes sont décrites plus bas. Une fois en mode insertion, vous en sortez en tapant la touche escape. Si votre terminal n'a pas de touche escape, ^[ devrait convenir (contrôle-[). Taper escape pendant que vous êtes déjà en mode commande ne fait pas sortir l'éditeur du mode commande. Un bip peut vous indiquer que vous êtes déjà dans ce mode.

Comment taper des commandes en mode commande

Les commandes du mode commande sont généralement au format suivant : (Les arguments optionnels sont donnés entre crochet.

La plupart des commandes font un caractère de long, en particulier celles qui utilisent le caractère de contrôle. Les commandes décrites dans cette section sont celles que l'on utilise le plus avec l'éditeur VI.

La quantité est définie par n'importe quel caractère de 1 à 9. Par exemple, la commande x efface un caractère sous le curseur. Si vous tapez 23x en mode commande, cela va effacer 23 caractères.

Certaines commandes utilisent un paramètre optionnel lieu, où vous pouvez spécifier le nombre de lignes ou la partie du document concernée par la commande. Le paramètre lieu peut aussi être n'importe quelle commande qui déplace le curseur.

Quelques commandes VI simples

Ceci est un simple groupe de commande pour permettre à un utilisateur débutant avec VI de commencer. D'autres commandes utiles, seront présentées ultérieurement.

a
fait entrer en mode insertion, les caractères tapés ensuite seront insérés après le curseur. Si vous spécifiez un nombre, tout le texte qui a été inséré sera répété ce nombre de fois
h
déplace le curseur sur le caractère précédent.
i
entre en mode insertion, Le caractère tapé ensuite sera inséré avant la position actuelle du curseur. Si vous spécifiez un nombre, tout le texte qui a été inséré sera répété ce nombre de fois
j
déplace le curseur d'une ligne vers le bas.
k
déplace le curseur d'une ligne vers le haut.
l
déplace le curseur d'un caractère vers la droite.
r
remplace le caractère sous le curseur. Un nombre spécifie le nombre de caractères à remplacer.
u
annule le dernier changement dans le fichier. Taper de nouveau u rétablit le changement.
x
efface le caractère sous le curseur. Nombre spécifie combien de caractères il faut effacer. Les caractères seront effacés après le curseur.

Les "buffers" texte de VI

L'éditeur VI a 36 "buffers" pour conserver des morceaux de texte, ainsi qu'un "buffer" principal. Chaque fois, qu'un bout de texte est effacé ou copié depuis le fichier, il est placé dans le "buffer" principal. Beaucoup d'utilisateurs de VI utilisent rarement les autres buffers, et se débrouillent sans eux. Le bloc de texte peut aussi être placé dans un autre buffer demandé en utilisant la commande ". Après avoir tapé ", une lettre ou un chiffre identifiant le buffer doit être entré. Par exemple, la commande : "mdd remplit le buffer m et efface la ligne courante. De même, du texte peut être collé avec les commandes p ou P. "mp colle le contenu du buffer m après la position actuelle du curseur. Pour toutes les commandes utilisées dans les deux sections suivantes, ces buffers peuvent être spécifiés pour un stockage temporaire de mots ou de paragraphes.

Couper et Copier

La commande la plus couramment utilisée pour couper est d. Cette commande efface du texte dans le fichier. La commande est précédée par un nombre optionnel et suivie par une indication de déplacement. Si vous doublez la commande en tapant dd, la ligne courante est effacée. Voici quelques combinaisons :

d^
efface de la position actuelle du curseur jusqu'au début de la ligne.
d$
efface de la position actuelle du curseur jusqu'à la fin de la ligne.
dw
efface de la position actuelle du curseur jusqu'à la fin du mot
3dd
efface 3 lignes à partir de la position actuelle du curseur vers le bas.

La commande y (commande de copie) opère comme la commande d en prenant du texte du fichier sans effacer le texte.

Coller

Les commandes pour coller sont p et P. Elles diffèrent seulement par la position où elles collent le texte par rapport au curseur. p colle le contenu du buffer spécifié ou du buffer général après le curseur, tandis que P le colle avant le curseur. nombre avant la commande, colle le texte le nombre de fois demandé.

Indenter et vérifier votre code

L'éditeur VI a des fonctions pour aider les programmeurs à formater leur code clairement. Une option pour régler chaque niveau d' indentation dans le code. Pour la définir, consultez la section des configurations du tutoriel. Par exemple, la commande pour régler la largeur du décalage est :set sw=4.

La commande suivante indente votre ligne ou retire l'indentation, et peut être utilisée avec nombre :

<<
Décale la ligne courante d'un cran vers la gauche.
>>
Décale la ligne courante d'un cran vers la droite.

L'éditeur VI a aussi une fonction qui vous aide à trouver les correspondances entre les parenthèses ou accolades dans votre code source. La commande % cherche la parenthèse ou accolade fermante correspondant à une parenthèse ou une accolade ouvrante particulière et vice-versa. Placez le curseur sur une parenthèse ou une accolade et tapez % pour déplacer le curseur sur la parenthèse ou accolade correspondante. Ceci est utile pour vérifier l'absence de parenthèses ou accolades non fermées. Si une parenthèse ou une accolade existe sans correspondance, VI va "biper" pour vous indiquer qu'aucun symbole correspondant n'a été trouvé.

Recherche de mots ou de caractères

L'éditeur VI peut faire deux types de recherche : chaînes de caractères ou caractères. Pour une recherche de chaîne, les commandes / et ?sont utilisées. Quand vous lancez ces commandes, la commande que vous venez de taper sera affichée sur la ligne du bas, où vous taperez la chaîne que vous cherchez. Ces deux commandes diffèrent uniquement par la direction dans laquelle la recherche est entreprise. La commande / cherche vers la fin du fichier, tandis que la commande ? cherche vers le début du fichier (de bas en haut). Les commandes n et N répètent la précédente recherche respectivement dans le même sens et dans le sens opposé. Certains caractères ont une signification particulière pour VI, et doivent donc être précédés d'un antislash (\) pour faire partie de l'expression recherchée.

Caractères spéciaux :

^
Début de ligne. (Au début de l'expression recherchée.)
.
Correspond à un caractère simple.
*
Correspond à zéro ou plusieurs fois le caractère précédent.
$
Fin de ligne (A la fin de l'expression recherchée.)
[
Correspond au début d'un groupe d'expressions correspondantes ou non. Par exemple /f[iae]t correspond à chacun de ces mots : fit fat fet. Dans ce cas, il correspond uniquement à ceux-là. /a[^bcd] ne correspond à aucun d'eux mais à tout ce qui contient "a" et une lettre autre que "b","c","d".
<
Peut être inséré dans une expression précédée d'un antislash pour rechercher le début ou la fin d'un mot. Par exemple /\<le\> va chercher seulement le mot "le" mais pas les mots comme "leur" ou "fleur".
>
Voir la description du caractère '<' au dessus.

La recherche de caractères cherche une ligne à l'intérieur de laquelle se trouve le caractère entré après la commande. Les commandes f et F cherchent un caractère uniquement sur la ligne courante. f cherche vers l'avant et F cherche vers l'arrière et le curseur se déplace sur la position du caractère trouvé.

Les commandes t et T cherchent un caractère seulement sur la ligne courante, mais avec t, le curseur se déplace sur la position avant le caractère, et T cherche depuis la fin de la ligne vers la position après le caractère .

Ces deux commandes peuvent être répétées en utilisant les commandes ; ou , (; répète la dernière recherche de caractère dans la même direction, alors que , la répète en sens inverse.)

Si l'option "ic" (ou ignorecase) est activée (tapez :set ic) la recherche est insensible à la casse.

Personnalisation de VI (et EX)

Vous pouvez personnaliser la façon dont VI se comporte. Les options d'édition sont activées en utilisant la commande :set, les options des éditeur VI et EX disponibles sur Wiliki sont les suivantes : (Vous pouvez obtenir cette liste en tapant :set all puis retour en mode commande)

noautoindent        magic                               noshowmatch
autoprint           mesg                                noshowmode
noautowrite         nomodelines                         noslowopen
nobeautify          nonumber                            tabstop=8
directory=/tmp      nonovice                            taglength=0
nodoubleescape      nooptimize                          tags=tags /usr/lib/tags
noedcompatible      paragraphs=IPLPPPQPP LIpplpipnpbp   term=xterm
noerrorbells        prompt                              noterse
noexrc              noreadonly                          timeout
flash               redraw                              timeoutlen=500
hardtabs=8          remap                               ttytype=xterm
noignorecase        report=5                            warn
keyboardedit        scroll=11                           window=23
keyboardedit!       sections=NHSHH HUuhsh+c             wrapscan
nolisp              shell=/bin/csh                      wrapmargin=0
nolist              shiftwidth=8                        nowriteany

Certaines de ces options ont des valeurs définies par le signe égal '=' , tandis que d'autres sont activées ou non. (Ces options de type "oui ou non" sont appelées Booléennes, et sont préfixées par "no" pour indiquer qu'elles ne sont pas sélectionnées.) Les options montrées ici sont les options qui sont définies sans personalisation. La description de certaines est donnée plus bas, avec une abréviation. Par exemple la commande set autoindent, vous pouvez taper :set autoindent ou :set ai. Pour la désélectionner, vous pouvez taper :set noautoindent ou :set noai.

autoindent (ai)
Cette option règle l'éditeur pour que les lignes suivantes soient indentées comme la ligne précédente. Si vous voulez retirer cette indentation, vous pouvez taper ^D comme premier caractère. Ce ^D fonctionne en mode insertion, et pas en mode commande. De plus la longueur de l'indentation peut être réglée par shiftwidth, expliqué plus bas.
exrc
Le fichier .exrc dans le répertoire courant est lu pendant le démarrage. Ceci doit être défini soit dans la variable d'environnement EXINIT soit dans le fichier .exrc dans votre répertoire home.
mesg
Désactive les messages si cette option est désélectionnée avec :set nomesg, ainsi rien ne peut vous déranger pendant que vous utilisez l'éditeur.
number (nu)
Affiche les lignes avec leur numéro sur le coté gauche.
shiftwidth (sw)
Cette option prend une valeur, et détermine la largeur de la tabulation logicielle. (La tabulation logicielle est utilisée pour les commandes << et >>.) Par exemple, vous pouvez régler un décalage d'une largeur de 4 avec cette commande : :set sw=4.
showmode (smd)
Cette option est utilisée pour afficher le mode dans lequel vous êtes actuellement. Si vous êtes en mode insertion, la ligne du bas va indiquer INPUT MODE.
warn
Cette option vous prévient si vous avez modifié le fichier mais ne l'avez pas encore sauvegardé.
window (wi)
Cette option définit le nombre de lignes de la fenêtre utilisé par VI. Par exemple, pour régler l'éditeur VI de façon à ce qu'il utilise seulement 12 lignes de votre écran (parce que votre modem est lent) vous pouvez utiliser : :set wi=12.
wrapscan (ws)
Cette option affecte la conduite de la recherche de mots. Quand wrapscan est sélectionné, si le mot n'est pas trouvé vers le bas du texte, la recherche reprendra au début.
wrapmargin (wm)
Si cette option a une valeur plus grande que zéro, l'éditeur va automatiquement faire passer le mot à la ligne suivante. C'est à dire que si vous avez plus que ce nombre d'espace par rapport à la marge de gauche, le mot va aller à la ligne, sans que vous ayiez à taper retour. Par exemple, pour régler la marge droite à deux caractères, vous pouvez taper : :set wm=2.

Abréviations et traductions de touches

Une commande de l'editeur EX qui est utile sur l'éditeur VI est la commande abbreviate. Elle vous permet de définir des abréviations pour des chaînes de caractères spécifiques. La commande ressemble à ceci : :ab chaînes chaîne à substituer. Si vous avez à taper le nom,"Humuhumunukunukuapua`a" mais que vous n'ayez pas envie de taper le nom complet, vous pouvez utiliser une abréviation. Pour cet exemple, la commande à entrer est :
:ab 9u Humuhumunukunukuapua`a
Maintenant quel que soit l'endroit où vous tapez 9u comme un mot séparé, VI va taper le ou les mots entiers indiqués. Si vous tapez 9université, il ne va pas substituer le mot.

Pour retirer une abréviation définie précédemment, la commande est anabbreviate. Pour retirer l'exemple précédent, la commande serait ":unab 9u". Pour obtenir la liste de vos abréviations, tapez :ab.

Une autre commande de l'éditeur EX utile pour la personnalisation est la commande de traduction de touche (mappage). Il y a deux types de commandes de traduction. Une pour le mode commande et une pour le mode insertion. Ces deux commandes sont respectivement :map et :map!. Le "mappage" fonctionne de façon similaire à abréviation, vous lui donnez une séquence de touches et une autre à mettre à la place.(La séquence de touches de remplacement est généralement constituée de commandes VI.)

La variable d'environnement EXINIT et le fichier .exrc

Il y a deux façons de personnaliser l'éditeur VI. Si vous créez un fichier nommé .exrc dans votre répertoire home , toutes les commandes qu'il contient seront executées quand VI démarrera. L'autre méthode est de definir une variable d'environnement nommé EXINIT. L'option sera sélectionnée dans le fichier de configuration de votre shell. Si vous utilisez /bin/csh (C-Shell), la commande est la suivante, et mise dans le fichier: .cshrc

    setenv EXINIT '...'
Si vous utilisez /bin/sh ou /bin/ksh, la commande est la suivante, et mise dans le fichier .profile :
    export EXINIT
    EXINIT='...'
Ne mettez pas ... comme dans l'exemple. Dans cet espace mettez la commande que vous voulez définir. Par exemple, si vous voulez avoir l'auto-indentation, la numérotation des lignes, et la marge droite (passage à la ligne - wrap margin) à 3 caractères, alors la commande setenv (pour C shell) serait :
    setenv EXINIT 'set ai nu wm=3'

Si vous voulez mettre plus d'une commande dans la variable EXINIT, séparez les commandes avec une barre verticale (|). Par exemple, pour "mapper" la commande 'g' au caractère 'G' en mode commande, la commande est :map g G et combiné avec la commande précédente, vous aurez :

setenv EXINIT 'set ai nu wm=3|map g G'

Si vous voulez créer le fichier nommé .exrc, vous pouvez y mettre ce qui est entre guillemets après le EXINIT.

Récupérer votre travail quand quelque chose va mal avec votre terminal

L'editeur VI édite une copie temporaire de votre fichier, et quand la session est terminée ou quand vous lui demandez de sauver, il place le contenu du fichier temporaire dans le fichier original. Si quelque chose se passe mal pendant que vous éditez votre fichier, l'éditeur VI va essayer de sauver quand même le travail en cours et de le stocker pour une récupération ultérieure. Note : Si VI meurt pendant que vous travaillez sur un fichier, il vous envoie un courrier sur la façon de récupérer ce travail. L'option -r est là pour la récupération. Si vous éditez le fichier infovitale, et si vous êtes inopinement déconnecté, alors l'option -r de l'éditeur VI devrait vous aider. La commande doit ressembler à quelque chose comme : vi -r infovitale. Après avoir utilisé l'option -r vous DEVEZ tout de même sauvegarder ce que vous avez récupéré dans le fichier initial. L'option -r ne fonctionne qu'une fois par session VI défaillante.

Avertissement pour l'utilisation de VI sur les stations de travail

Il y a deux choses à éviter lors de l'utilisation des stations : Éditer le même fichier plusieurs fois en même temps et changer la taille de l'écran.

Si vous vous connectez plusieurs fois pour éditer le même fichier avec VI et que vous sauvegardiez dans une fenêtre puis dans une autre, les changements enregistrés en premier seront écrasés. Vérifiez que vous n'utilisez qu'une copie de VI par fichier.

Si vous utilisez un programme de terminal, vous pouvez changer la taille de l'écran en tirant sur les côtés de la fenêtre. Si le redimensionnement ne fonctionne pas correctement, la commande à taper est :

    eval `resize`
Si cela ne marche toujours pas la commande à taper peut être :
    eval `/usr/bin/X11R6/resize`
Cela devrait être un problème très rare avec des versions modernes de Vi comme par exemple Vim.

Résumé des commandes VI

Cette liste est un résumé des commande VI, classées par fonction. Il peut y avoir d'autres commandes disponibles, donc vérifiez dans le manuel en ligne de VI. Pour une référence simple, vous pouvez copier ce fichier en texte, retirer ce dont vous pensez ne pas avoir besoin et imprimer le fichier raccourci qui en résulte.

Couper et coller/effacer du texte

"
Spécifie le buffer à utiliser avec les commandes se servant d'un buffer. Faites suivre le " par la lettre ou le nombre, qui correspond au buffer.
D
Efface (Delete) de la position actuelle du curseur à la fin de la ligne.
P
Colle (Paste) le buffer indiqué avant la position actuelle du curseur. Si aucun buffer n'est indiqué (avec la commande ") alors 'P' utilise le buffer général.
X
Efface le caractère avant le curseur.
Y
Copie (Yank) la ligne courante dans le buffer indiqué. Si aucun buffer n'est indiqué, le buffer général est utilisé.
d
Efface (Delete) jusqu'à lieu. "dd" efface la ligne courante. Un nombre efface ce nombre de lignes. Tout ce qui est effacé est placé dans le buffer spécifié avec la commande ". Si aucun buffer n'est spécifié, le buffer général est utilisé.
p
Colle (Paste) le buffer spécifié après la position actuelle du curseur ou la ligne. Si aucun buffer n'est spécifié (avec la commande ") 'p' utilise le buffer général.
x
Efface le caractère sous le curseur. Un nombre indique combien de caractères doivent être effacés. Les caractères seront effacés après le curseur.
y
Copie (Yank) jusqu'à lieu, en mettant le résultat dans un buffer. "yy" copie la ligne courante. Un nombre copie ce nombre de lignes. Le buffer peut être spécifié avec la commande ".Si aucun buffer n'est spécifié, le buffer général est utilisé.

Insérer du texte

A
Joint (Append) à la fin de la ligne courante.
I
Insère à partir du début de la ligne.
O
(la lettre)Entre en mode insertion sur une nouvelle ligne au-dessus de la position courante du curseur.
a
Entre en mode insertion, les caractères tapés seront ajoutés après la position courante du curseur. Un nombre insère tout le texte ce nombre de fois.
i
Entre en mode insertion, les caractères tapés seront insérés avant la position courante du curseur. Un nombre insère tout le texte ce nombre de fois.
o
Entre en mode insertion sur une nouvelle ligne en dessous de la position courante du curseur.

Déplacer le curseur dans le fichier

^B
Monte d'une page. Un nombre fait monter de ce nombre de pages.
^D
Descend d'une demi fenêtre. Un nombre fait descendre de ce nombre de lignes.
^F
Descend d'une page. Un nombre fait descendre de ce nombre de pages.
^H
Déplace le curseur d'un espace vers la gauche. Un nombre fait déplacer de ce nombre d'espaces.
^J
Descend le curseur d'une ligne dans le même colonne. Un nombre fait descendre de ce nombre de lignes.
^M
Déplace vers le premier caractère de la ligne suivante.
^N
Descend le curseur d'une ligne dans le même colonne. Un nombre fait descendre de ce nombre de lignes.
^P
Monte le curseur d'une ligne dans le même colonne. Un nombre fait monter de ce nombre de lignes.
^U
Monte d'une demi fenêtre. Un nombre fait monter de ce nombre de lignes.
$
Déplace le curseur à la fin de la ligne courante. Un nombre le fait se déplacer à la fin des lignes suivantes.
%
Déplace le curseur sur la parenthèse ou accolade correspondante.
^
Déplace le curseur sur le premier caractère non-blanc.
(
Déplace le curseur au début de la phrase.
)
Déplace le curseur au début de la phrase suivante.
{
Déplace le curseur au paragraphe précédent.
}
Déplace le curseur au paragraphe suivant.
|
Déplace le curseur à la colonne indiquée par le nombre.
+
Déplace le curseur sur le prochain caractère non-blanc de la ligne suivante.
-
Déplace le curseur sur le prochain caractère non-blanc de la ligne courante.
0
(Zéro) Déplace le curseur sur la première lettre de la ligne courante.
B
Déplace le curseur d'un mot en arrière, en sautant la ponctuation.
E
Avance à la fin du mot, en sautant la ponctuation.
G
Aller (Go) à la ligne indiqué par le nombre. Si aucun nombre n'est donné, il va à la fin du fichier.
H
Déplace le curseur sur le premier caractère non-blanc en haut de l'écran.
L
Déplace le curseur sur le premier caractère non-blanc en bas de l'écran.
M
Déplace le curseur sur le premier caractère non-blanc au milieu de l'écran.
W
Avance au début d'un mot,en sautant la ponctuation.
b
Recule le curseur d'un mot. Si le curseur est au milieu d'un mot, place le curseur sur le premier caractère du mot.
e
Avance le curseur d'un mot. Si le curseur est au milieu d'un mot, place le curseur sur le dernier caractère du mot.
h
Déplace le curseur sur le caractère de gauche.
j
Descend le curseur d'une ligne.
k
Monte le curseur d'une ligne.
l
Déplace le curseur sur le caractère de droite.
w
Déplace le curseur sur le mot suivant. Si le curseur est au milieu d'un mot, place le curseur sur le premier caractère du mot suivant.

Déplacer le curseur dans l'écran

^E
Déplace l'écran d'une ligne vers le haut. Un nombre fait monter de ce nombre de lignes.
^Y
Déplace l'écran d'une ligne vers le bas. Un nombre fait descendre de ce nombre de lignes.
z
Redessine l'écran avec les options suivantes. "z" place la ligne courante en haut de l'écran; "z." place la ligne courante au centre de l'écran; et "z-" place la ligne courante en bas de l'écran. Si vous spécifiez un nombre avant la commande 'z', il agit sur la ligne spécifiée. Par exemple, "14z." place la ligne 14 au centre de l'écran.

Remplacer du texte

C
Change de la position du curseur jusqu'à la fin de la ligne.
R
Remplace les caractères de l'écran par les caractères entrés, s'arrête en tapant la touche Escape.
S
Change une ligne entière.
c
Change jusqu'à <where>. "cc" change la ligne courante. Un nombre fait changer ce nombre de lignes.
r
Remplace un caractère sous le curseur. Indiquer un nombre fait remplacer ce nombre de caractères.
s
Substitue un caractère sous le curseur et passe en mode insertion. Spécifier un nombre pour substituer ce nombre de caractères. Un signe dollar($) sera ajouté au dernier caractère substitué.

Rechercher du texte ou des caractères

,
Répète la dernière commande f, F, t ou T dans la direction opposée.
/
Recherche vers le bas dans le fichier la chaîne spécifiée après le /.
;
Répète la dernière commande f, F, t ou T.
?
Recherche vers le haut dans le fichier la chaîne spécifiée.
F
Recherche vers l'avant dans la ligne courante le caractère spécifié après la commande 'F'. S'il l'a trouvé, déplace le curseur sur sa position.
N
Répète la dernière recherche faite par '/' ou '?', mais dans la direction opposée.
T
Recherche vers l'arrière dans la ligne courante le caractère spécifié après la commande 'T', et se place sur la colonne suivante s'il l'a trouvé.
f
Recherche dans la ligne courante le caractère spécifié après la commande 'f'. S'il l'a trouvé, déplace le curseur sur sa position.
n
Répète la dernière recherche faite par '/' ou '?'.
t
Cherche dans la ligne courante le caractère spécifié après la commande 't' et se place sur la colonne précédent le caractère ,s'il l'a trouvé.

Manipulation des caractères/Formatage de ligne

~
Inverse la casse du caractère sous le curseur.
<
Décale jusqu'à lieu d'une tabulation vers la gauche. "<<" décale la ligne courante et peut être répété avec un nombre.
>
Décale jusqu'à lieu d'une tabulation vers la droite. ">>" décale la ligne courante et peut être répété avec un nombre.
J
Joint la ligne courante à la suivante. Un nombre fait joindre ce nombre de lignes.

Sauvegarder et quitter

^\
Sort du mode "VI" et passe en mode "EX". L'éditeur EX est l'éditeur en ligne de commande sur lequel VI est construit. La commande EX pour retourner dans VI est ":vi".
Q
Sort du mode "VI" et passe en mode "EX". L'éditeur EX est l'éditeur en ligne de commande sur lequel VI est construit. La commande EX pour retourner dans VI est ":vi".
ZZ
Quitte l'éditeur, en sauvant tout les changements effectués.

Divers

^G
Affiche le nom du fichier courant et son statut.
^L
Vide et redessine l'écran.
^R
Redessine l'écran en retirant les mauvaises lignes.
^[
Touche d'échappement. Annule les commandes partiellement tapées.
^^
Retourne au dernier fichier édité.
!
Exécute un shell. Si un lieu est spécifié, le programme qui est exécuté avec ! utilise les ligne(s) spécifiée(s) comme entrée standard, et va les remplacer par la sortie standard du programme exécuté. "!!" exécute un programme utilisant la ligne courante comme entrée. Par exemple "!4jsort" va prendre 5 lignes à partir de la position courante du curseur et exécuter sort. Après avoir tapé la commande, il y aura un point d'exclamation où vous pourrez taper la commande.
&
Répète la précédente commande ":s".
.
Répète la dernière commande qui a modifié le fichier.
:
Commence une commande de l'éditeur EX. La commande est exécutée une fois que l'utilisateur a tapé retour.(voir section ci-dessous.)
@
Tape la commande stockée dans le buffer spécifié.
U
Restaure la ligne courante dans l'état où elle se trouvait avant que le curseur aille à la ligne.
m
Marque la position courante du curseur avec le caractère spécifié après la commande 'm'.
u
Annule (Undo) le dernier changement dans le fichier. Retaper 'u' va refaire le changement.(NDT : avec Vim,'u' annule le changement précédent et '.' le rétablit.).

Les commandes EX

L'éditeur VI est basé sur un autre éditeur, nommé EX. L'éditeur EX édite seulement par ligne. Depuis l'éditeur VI, vous utilisez la commande : pour entrer une commande EX. La liste donnée ici n'est pas complète, mais les commandes proposées sont les plus utilisées. Si plus d'une ligne doit être modifiée par certaines commandes (comme ":s" et ":w"), un intervalle doit être spécifié avant la commande. Par exemple, pour substituer de la ligne 3 à la ligne 15, la commande est ":3,15s/from/this/g".

:ab chaîne chaînes
Abréviation. Si un mot correspondant à chaîne est tapé dans VI, l'éditeur insère automatiquement les mots correspondants. Par exemple, abréviation ":ab usa United States of America" va insérer les mots, "United States of America" partout où le mot "usa" est tapé.
:map touches new_seq
Mapping. Ceci vous permet de remplacer une touche ou une séquence de touches par une autre touche ou séquence de touches.
:q
Quitte VI. Si des changements ont été faits, l'éditeur va afficher un message d'avertissement.
:q!
Quitte VI sans sauvegarder les changements.
:s/pattern/to_pattern/options
Substitution. Ceci substitue le modèle spécifié par la chaîne dans to_pattern. Sans option, il substitue seulement la première occurrence du modèle. Si un 'g' est spécifié, toutes les occurrences seront substituées. Par exemple, la commande ":1,$s/Dwayne/Dwight/g" remplace toutes les occurrences de "Dwayne" par "Dwight".
:set [all]
Définit les options de VI et EX. La commande ":set all" affiche les options possibles. (Voir la section sur la personnalisation de VI pour quelques options.)
:una string
Retire l'abréviation définie précédemment par ":ab".
:unm keys
Retire le mapping défini par ":map".
:vi
Commence l'édition d'un nouveau fichier. Si les changements n'ont pas étés sauvegardés, l'éditeur vous le signale.
:w
Sauvegarde (Write out) le fichier courant.
:w nom_de_fichier
Ecrit (Write) le buffer dans le fichier spécifié.
:w >> filename
Ajoute le contenu du buffer au fichier.
:wq
Enregistre le buffer et quitte.

Références