|
Des commandes plus pointues
Pour se déplacer dans le fichier, on peut utiliser :
- h ou flèche gauche : pour aller au caractère à gauche
- j ou flèche bas : pour descendre à la ligne suivante
- k ou flèche haut : pour remonter à la ligne précédente
- l ou flèche doite : pour aller au caractère à droite
- 0 ou home : pour aller en début de ligne
- $ ou end : pour aller en fin de ligne
- ^ : pour aller sur le premier caractère non-blanc de la ligne courante
- w (word) : déplacement au début du prochain « petit » mot
(un « petit » mot consiste en une suite ininterrompue de caractères alphanumétiques
ou de caractères de ponctuation, mais pas un mélange de caractères de ponctuation
et alphanumériques)
- W : déplacement au début du prochain « grand » mot
(mélange alphanumérique et ponctuation)
- b (back) : retour au début d'un « petit » mot
- B : retour au début d'un « grand » mot
- e : déplacement à la fin d'un « petit » mot
- E : déplacement à la fin d'un « grand » mot
- fx (forward x) : pour aller au prochain caractère "x"
- Fx : fait la même chose que fx, mais en reculant vers la gauche pour trouver le caractère "x"
- tx : pour aller au caractère précédant le prochain caractère "x"
- Tx : fait la même chose que tx, mais vers la gauche
- G : sert à se déplacer à la dernière ligne du fichier
- :x : pour se déplacer à la ligne x (paramètre numérique x)
- ctrl+f : pour se déplacer d'un écran vers le bas
- ctrl+b : pour se déplacer d'un écran vers le haut
- ctrl+d : déplacement vers le bas d'un demi-écran
- ctrl+u : déplacement vers le haut d'un demi-écran
- % (sur une parenthèse) : pour se déplacer sur la parenthèse correspondant à la paire
(ouverture-fermeture). Très utile lorsqu'on programme en C, et surtout dans
des langages fonctionnels, connus pour leur utilisation massive des parenthèses.
- { ou } : pour se déplacer au bloc précédent ou suivant. La notion
de bloc varie selon le type de fichier édité. C'est par exemple un paragraphe en
HTML, ou le corps d'une fonction en langage C.
- n| : Déplacement sur la colonne n de la ligne courante
- + return : déplacement sur le premier caractère non-blanc sur la même ligne
- - : déplacement sur le premier caractère non-blanc de la ligne précédente
- ) : déplacement sur la fin d'une phrase (une phrase se termine soit par
une ligne blanche, ou un point ou une marque d'exclamation suivis par deux
caractères d'espace ou la fin de la ligne. Un point ou une marque d'exclamation
suivis par un seul caractère d'espace ne termine pas une phrase ; ceci est un
comportement correct, en accord avec les règles traditionnelles de la manière
dont les phrases doivent apparaître dans les documents imprimés, mais apparaît
souvent comme faux pour ceux qui n'ont jamais utilisé une classe typographique
correcte.) NdT : Ceci n'est valable qu'en typographie anglaise. En typographie
française, une phrase se termine par un point (ou une marque d'exclamation) suivit
par une espace.
- ( : déplacement au début d'une phrase
- H : déplacement vers la position première (la ligne du haut) de l'écran
- M : déplacement au milieu de la ligne à l'écran
- L : déplacement sur la dernière ligne de l'écran
- nG : déplacement sur la ligne n. Si n n'est pas donné, déplacement
sur la dernière ligne du fichier
- /toto : recherche l'occurence "toto" dans le texte (on utilise ensuite
la touche "n" pour passer au suivant)
- ?toto : recherche en arrière l'occurence "toto" dans le texte (on utilise
ensuite la touche "N" pour passer au précédent)
La plupart des commandes de mouvements présentées ci-dessus peuvent être
précédées d'un compteur de répétitions ; le mouvement est simplement répété
le nombre de fois donné :
- 3w : déplacement en avant de 3 mots
- 5k : déplacement vers le haut de 4 caractères
- 3fa : trouve le 3ème « a » successif de la ligne courante
- 6+ : descend de 6 lignes
Effacer du texte :
- dw : efface le prochain « petit » mot
- d3w : efface les 3 prochains « petits » mots
- 3dw : trois fois, efface le prochain « petit » mot
- 3d3w : trois fois, efface les 3 prochains « petits » mots
(c'est-à-dire, efface les 9 prochains « petits » mots)
- d+ : efface la ligne actuelle et la ligne suivante
- d/the : efface à partir du caractère courant jusqu'à, mais sans
inclure, la prochaine apparition de « the »
- d$ : efface jusqu'à la fin de la ligne
- d0 : efface jusqu'au début de la ligne
- d30G : Efface la ligne courante jusqu'à et incluant la ligne 30
- dG : efface la ligne courante jusqu'à et incluant la dernière
ligne
- d1G : efface la ligne courante jusqu'à et incluant la ligne 1
- 15x : efface le caractère courant et les 14 suivants.
Changer le texte :
- cw : change le mot
- 3cw : change trois mots
- cc : change la ligne courante
- 5cc : change cinq lignes (courante et quatre suivantes)
- c/the : changer du caractère courant jusqu'à, mais sans inclure, la
prochaine occurence de « the »
- c$ : change jusqu'à la fin de la ligne
- c30G : change de la ligne courante jusqu'à la ligne 30 incluse
- cG : changer de la ligne courante jusqu'à et incluant la dernière
ligne
- c1G : changer la ligne courante jusqu'à la ligne 1 incluse
Copier du texte
- yy : copie la ligne courante
- 5yy : copie la ligne courante et les 4 lignes suivantes
- y3w : copie 3 mots
- y$ : copie jusqu'à la fin de la ligne
- y1G : copie de la ligne courante jusqu'à la ligne 1 incluse
- p : colle les données copiées après le curseur
- P : colle les données copiées au-dessus du curseur
Substitution
- :1,$s/the/THE/g de la ligne 1 à la dernière ligne (ligne $),
remplace le texte « the » par « THE » ; le fais globalement pour toute ligne
où se trouve un « the »
- :'a,.s/.*/ha ha/ de la ligne marquée a jusqu'à la ligne actuelle
(ligne .), substitue tout ce qu'il y a sur la ligne par le texte « ha ha »
Diverses commandes
- :w Écrit le contenu du tampon dans le fichier sans quitter
VI
- :w abc Écrit le contenu du tampon dans le fichier abc (crée abc
s'il n'existe pas, ou réécrit son contenu actuel s'il existe) sans quitter
VI
- :1,10w abc Écrit les lignes 1 à 10 dans le fichier abc
- :'a,$w abc Écrit de la ligne marquée a jusqu'à la dernière ligne
dans le fichier abc
- :e abc Édite le fichier abc, au lieu du fichier actuel. VI
affiche un message d'erreur si des changements ont été faits au fichier actuel
et qui n'ont pas été sauvés avec :w
- :e # Édite le fichier précédemment édité (des commandes successives
:e# vont et viennent entre deux fichiers)
- :f abc Change le nom du fichier pour le tampon actuel vers abc
- :q Quitte, à moins qu'il n'y ait des changements que vous ayez
faits
- :q! Quitte, en omettant tous les changements que vous pourriez
avoir fait
- :r abc Lit le fichier abc dans le tampon vi actuel, après la
ligne sur laquelle se trouve le curseur (essayez :r croc pour insérer une
copie du fichier croc)
- :!cmd Exécute la commande cmd (who, sort, ls, etc.)
Filtrer le texte
La commande de filtrage ! demande le nom d'une commande UNIX (qui doit
être un filtre), passe les lignes sélectionnées par ce filtre, en remplaçant les
lignes sélectionnées dans le buffer vi avec la sortie de la commande
filtrante. La capacité de vi à passer des parties arbitraires de texte au
travers de tout filtre UNIX ajoute une flexibilité incroyable à vi, sans
« coût supplémentaire » de taille ou de performance à vi même.
Quelques exemples peuvent aider l'illustration. Créez une ligne dans votre
fichier contenant juste le mot « who » et absolument aucun autre
texte. Placez le curseur sur cette ligne, et tapez !!. Cette commande est
analogue à dd, cc, ou yy, mais au lieu d'effacer, de changer ou de copier la
ligne courante, elle filtre la ligne courante. Lorsque vous pressez le second !,
le curseur descend vers le coin en bas à gauche de l'écran et un simple ! est
affiché, vous demandant d'entrer le nom d'un filtre. En tant que nom de filtre,
tapez « sh » et pressez la touche Entrée. sh (le shell Bourne)
est un filtre ! Il lit l'entrée standard, exécute une partie de l'entrée
(c'est-à-dire qu'il exécute des commandes), et envoie sa sortie (la sortie de
ces commandes) à la sortie standard. Filtrer la ligne contenant « who » au
travers de « sh » remplace la ligne contenant « who » par la
liste des utilisateurs du système courant -- directement dans votre fichier !
Essayez de répéter ce procédé avec date. C'est-à-dire, créez une ligne
ne contenant rien d'autre que le mot date, puis placez le curseur sur
cette ligne, et tapez !!sh et la touche Entrée. La ligne contenant
date est remplacée par la sortie de la commande date.
Mettez votre curseur sur la première ligne de la sortie de « who ». Comptez
le nombre de lignes. Supposons, par exmple, que ce nombre soit six. Sélectionnez
alors ces six lignes à filtrer au travers de sort ; tapez 6!!sort et la
touche Entrée. Les six lignes seront passées à sort, et la sortie de sort
remplacera les six lignes d'origine.
La commande filtre peut uniquement être utilisée sur des lignes complètes,
pas sur des caractères ou des mots.
Quelques autres commandes de filtres (ici, « CR » indique pressez Entrée) :
- !/the CR sort CR : sort la ligne courante jusqu'à la ligne suivante
contenant « the » incluse
- !1Ggrep the CR : remplace la ligne courante jusqu'à la ligne 1
incluse par les lignes contenant « the »
- !Gawk '{print $1}' CR : de la ligne courante jusqu'à la fin du
fichier, remplace chaque ligne par son premier mot
Marquer des lignes et des caractères
Vous pouvez marquer des lignes et des caractères pour être utilisés en tant
que cible pour des mouvements, effacement, changement, copie, et filtration en
utilisant la commande mc, où c est une lettre minuscule.
Par exemple, mettez le curseur au milieu d'un mot et tapez ma. Ceci marque le
caractère sous le curseur sous la marque a.
Maintenant, déplacez le curseur en dehors du caractère marqué vers une ligne
différente (utilisez les flèches curseur, CTRL-u, ou autre). Pour retourner à la
ligne marquée, tapez 'a (c'est-à-dire apostrophe, puis a). Ceci vous place sur
le premier caractère non-blanc de la ligne contenant la marque a.
Sortez de la ligne encore une fois. Pour retourner au caractère marqué, tapez
`a (apostrophe inverse, puis a). Ceci vous déplacera sur le caractère marqué par
a.
Le marquage est habituellement utilisé avec l'effacement, le changement, la
copie ou la filtration. Par exemple, déplacez le curseur sur une autre ligne que
celle contenant la marque a, et pressez d'a (d, apostrophe, a). Ceci efface de
la ligne courante jusqu'à la ligne marquée a incluse.
Mettez le curseur au milieu d'un autre mot et tapez mb pour mettre la marque
b. Maintenant, déplacez le curseur hors de ce mot (mais seulement de quelques
lignes, ainsi vous pourrez voir ce que nous allons faire plus facilement), et
pressez d`b (d, apostrophe inverse, b). Ceci efface le caractère courant
jusqu'au caractère marqué par b inclus.
Comme autre exemple, pour trier la sortie de who, marquez la première ligne
(ma), puis déplacez le curseur vers la dernière ligne et taper !'asort puis la
touche Entrée.
Si vous sautez jusqu'à une marque et que vous décidez de revenir en arrière,
de l'endroit d'où vous avez sauté, vous pouvez taper '' (reviens à la ligne) ou
`` (reviens au caractère).
Nommer les tampons
Lorsque vous effacez, modifiez, ou copier du texte, le texte original est
sauvé (jusqu'au prochain effacement, changement ou copie) dans un tampon non
nommé à partir duquel il peut être mis en utilisant p ou P. En utilisant le
tampon non nommé, seul le plus récent changement du texte peut être récupéré.
Si vous voulez effacer, changer ou copier plusieurs parties de texte et se
souvenir de toutes (jusqu'à un maximum de 26), vous pouvez donner un nom au
tampon avec la commande utilisée. Un nom de tampon est de la forme "c (double
apostrophe, c minuscule).
Par exemple, tapez "ayy pour copier la ligne courante dans le tampon a, puis
déplacez vous sur une autre ligne et tapez "byy pour copier cette ligne dans le
tampon b. Maintenant, déplacez vous n'importe où dans le fichier et tapez "ap et
"bp pour placer des copies du texte sauvé dans les tampons a et b.
Quelques autres commandes de tampon :
- "a6yy : Copie 6 lignes (courante et 5 suivantes) dans le tampon a.
- "bd1G : Efface de la ligne courante jusqu'à la ligne 1 incluse, en
sauvant les lignes effacées dans le tampon b.
"cy'c : Copie de la ligne courante jusqu'à la ligne marquée c dans
le tampon c (les marques et les tampons sont distincts, et peuvent avoir le
même nom sans que vi ne s'en préoccupe).
version texte imprimable
copyright jOas 2003
Optimisé pour Netscape Communicator 4.51

|