original in en Ben Y. Yoshino
en to fr Clément Junca
Ben Yoshinori Yoshino travaille à l'université de Hawaii. Sa page personnelle peut être visitée à http://www.eng.hawaii.edu/~ben/
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.
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.
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 :
D'abord indiquez à votre shell quel type de terminal vous utilisez. (Si vous n'êtes pas sûr de savoir quel shell vous utilisez : echo
$SHELL.) Dans cet exemple, le type de terminal est "vt100". Remplacez-le par le type de terminal que vous utilisez. Pour le shell C (/bin/csh), la commande est :
set term=vt100Pour le Bourne Shell (/bin/sh) ou le Korn Shell (/bin/ksh), le commandes sont les suivantes :
export TERM TERM=vt100Ensuite, réinitialisez votre terminal avec la commande :
tset
Maintenant que le terminal est correctement réglé, nous sommes prêts à commencer avec 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 charactersSi 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.
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.
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.
Les commandes du mode commande sont généralement au format suivant : (Les arguments optionnels sont donnés entre crochet.
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.
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.
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.
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 :
La commande y (commande de copie) opère comme la commande d en prenant du texte du fichier sans effacer le texte.
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é.
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 :
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é.
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 :
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.
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.
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.)
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.
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.
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.
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.
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".