![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
vi a trois modes de fonctionnement différents:
Dans la suite, on appelera ces commandes les commandes ex.
: | passer en mode commande |
Q | passer en mode commande |
:q | quitter |
:q! | forcer à quitter |
:w fichier | sauver le fichier |
:w!fichier | sauver le fichier impérativement |
:w | sauver sous |
:wq | écr re le fichier et sortir |
:m,nw fichier | ecrire les lignes de m à n dans un fichier |
:e! | rééditer en oubliant les modifications |
:e: | editer un nouveau fichier (tout en conservant les buffers) |
:e# | editer le fichier précédent |
:r fichier | insère le fichier à l'emplacement courrant |
:!commande | execute la commande système commande |
:r! commande | execute la commande système commande et insère le résultat à l'emplacement courrant |
:sh | appel d'un sell. Sortie par exit |
:s/DE/A/ | remplace DE par A (1 fois) dans la ligne courrante |
:s/DE/A/g | remplace tous les DE par A |
:s/\(DE\)/A | \1/ remplace DE par A et contatene avec DE |
:map K ibegin | map la touche K avec l'insertion du mot begin |
:map K d$ | map la touche K avec l'effacement jusqu'à la fin de la ligne |
:unmap K | retire le mapapge de la touche K |
:map | affiche les touches mappées |
Pour le mappage de touches, les touches que l'on peut mapper sont
:ab ch | chaine |
ch ESC | inseree chaine |
:ab | affiche les abbréviation |
:una ch | retire une abbréviation |
:set list | montre les caractères invisibles |
:set nolist | cache les caractères invisibles |
:set nu | fixe les numéros de lignes |
:set number | montre les numéros de lignes |
:set nonu | retire les numéros de ligne |
:set nonumber | cache les numéros de lignes |
:set ignorecase | ignore la casse pour les recherches |
:set ic | |
:set ignorecase | n'ignore pas la casse pour les recherches |
:set noic | |
:set all | montrer les options |
:set list | afficher les caractères lisibles |
:set wm=n | garder n espaces de marge à droite |
:set autoindent | auto indentation on |
:set noautoindent | pas de auto indentation |
:set all | montre les paramêtres |
Ces parametres peuvent être conservés dans .exrc du home directory
Attention sous AIX le nombre d'option est restreint. Certaines options n'existent pas.
:set ai | permet de faire automatiquement les indentations |
:set autoindent | |
:set shiftwidth=n | permet de régler à n le nombre d'espace d'une indentation |
:set sw=n |
0 | va au début de la ligne |
$ | va à la fin de la ligne |
h | gauche |
j | haut |
k | bas |
l | droite |
1G | va en début de document |
:100 | va à la ligne 100 |
H | va en haut de l'écran |
L | va en bas de l'écran |
G | va à la dernière ligne du fichier |
nG | va à la ligne n du fichier |
page down | |
page up | |
w | début du mot suivant |
e | fin du mot suivant |
W | début du mot précédent |
nW | en avant de n mot |
E | fin du mot précédent |
B | en arrirère de unmot |
nB | en arrière de n mot |
( | début de la phrase précédente |
) | début de la phrase suivante |
{ | début du paragraphe précédente |
} | début du paragraphe suivante |
% | va à la parenthèse ou l'accolade correspondante. |
/exp | cherche une chaine vers l'avant |
?exp | cherche une chaine vers l'arrière |
n | poursuit la recherche dans le même sens |
N | poursuit la recherche dans le sens contaire |
s/chaine1/chaine2/ options | remplace la chaine chaine1 par chaine2 |
:g/string1/s//string2/ options | recherche et remplacement global de a chaine chaine1 par chaine2 |
x | efface un caractère |
nx | efface n caractères |
dw | efface un mot |
dd | efface une ligne |
ndd | efface n lignes |
D | efface jusqu'à la fin de l ligne |
d0 | efface jusqu'au début de la ligne |
dG | efface jusqu'à la fin du fichier |
u | défait la dernière modification |
. | refaire la dernière modification à nouveau |
Y | sélectionne une ligne |
n | Sélectionne n lignes |
p | dépose la sélection après le curseur |
P | dépose la sélection avant le curseur |
J | union de la ligne suivante et de la ligne courrante |
nJ | Union de n lignes avec la courrante |
xp | transpose 2 caractères |
<< | indentation de la ligne vers la gauche |
>> | indentation de la ligne vers la droite |
n<< | indente les n lignes suivantes |
n>> | |
<% | indente si on est placé sur le premier élément d'une paire de crochets, de parenthèses ou d'accolades |
>% |
a | ajout après le curseur |
A | ajout à la fin de la ligne |
i | insère avant lr curseur |
ni | insère n fois le texte |
I | insère en début de ligne |
o | ouvre une ligne après le curseur |
O | ouvre une ligne avant le curseur |
cw | modifie un mot |
ncw | modifie n mot |
C | modifie une ligne |
C$ | modifie une ligne |
r | remplace un caratère |
nr | remplace n lettre par le caractère |
R | remplace/retape une ligne |
Il existe 26 buffers nommés avec des lettres (de a à z) et 9 avec des chiffres (de 1 à 9)
commande | buffer | explication |
"ayy | a | copier une ligne dans le buffer a |
"a5yy | a | mettre cinq lignes dans le buffer a |
"Byy | b | ajouter une ligne dans le buffer b |
"ap | a | paste à l'emplacement courrant du buffer a |
On peut avoir jusqu'à 9 buffer de \1 à \9. Toutes les chaines cherchées doivent être encapsulées ente \( et \)
exemple:
comment déplacer un texte du fichier source à destination
vi source “%blue (a)%red (10)yy (copie 10 lignes dans le buffer a):w (ecrire le buffer a) :e dest (afficher le fichier destination) “ap (copie du texte après le curseur) :30,60w
L'editeur VI présente les limitations suivantes sous AIX, sachant que le compte se fait en caractères de 8 bits:
Je l'ai déjà évoqué plus haut, certaines options de configuration n'existent pas sous AIX.
Les principales sont:
Exemple sous AIX:
:set all autoindent mesg noshowmode autoprint nomodeline noslowopen noautowrite nonumber tabstop=8 nobeautify nonovice taglength=0 closepunct='".,;)]} nooptimize tags=tags /usr/lib/tags directory=/var/tmp paragraphs=IPLPPPQPP LIpplpipbp backtag noedcompatible partialcharacter=- term=vt100 noerrorbells prompt noterse noexrc noreadonly timeout flash redraw ttytype=vt100 hardtabs=8 remap warn history=32 report=5 window=23 noignorecase scroll=11 wrapscan linelimit=1048560 sections=NHSHH HUuhsh+c wrapmargin=0 nolisp shell=/usr/bin/ksh nowriteany nolist shiftwidth=8 wraptype=word magic noshowmatch