éditeur de texte

mardi 16 septembre 2008
par  Jerome ROBERT
popularité : 2%

 

VI. L’ éditeur de texte :

 

 

Sur toutes les versions du système, on dispose de l’éditeur
plein écran vi ( video ). Le point de référence est toujours la
position du curseur.

Cet éditeur peut fonctionner quel que soit le type de
terminal utilisé.

Son bon comportement est lié au contenu de la variable
shell TERM
qui doit contenir un nom d’entrée adéquat dans les fichiers
système décrivant les émulations de terminaux.

L’administrateur est responsable du positionnement correct
de cette variable dès la connexion.

L’utilisateur pourra préférer d’autres éditeurs plus
conviviaux ou intuitifs, notamment en environnement X_Window. Néanmoins, une
connaissance minimale de « vi » s’avère nécessaire pour être capable de
créer ou modifier un fichier de texte quel que soit l’environnement de
travail.

 

 

 

 

Quelques principes de fonctionnement

 

 

L’éditeur place le terminal en mode « raw », dit « mode commande ».

Cela signifie que chaque touche est directement interprétée comme une
commande.

Pour insérer ou modifier du texte dans le fichier, l’utilisateur doit
invoquer une
commande qui place l’éditeur en mode « insertion de
texte ». A la fin de sa
manipulation, il doit retourner en mode commande
par la touche « Escape ».

 

Les déplacements sont des commandes et ne doivent pas s’effectuer en
mode
« insertion de texte ».

Même si certaines émulations tolèrent ce comportement, il est
incontournable d’adopter rapidement ce que l’on appellera le réflexe de
la touche « Escape »
. L’éditeur ne permet pas de se déplacer au-dela 
du texte existant
.

Il faut, dans ce genre de situation, penser en terme d’insertion de texte
et utiliser une commande appropriée ( insertion en fin de ligne, insertion
après la ligne courante, etc... ).

Certaines commandes apparaissent en écho sur la dernière ligne de l’écran,
précédées du caractère : . Ces commandes correspondent au mode « commande
syntaxique »
.

En environnement X_Window, dans le cadre de l’émulateur « xterm » (
voir chapître 8 ), vi intègre la fonctionnalité de « couper-coller »
via la souris.

Cette manipulation est possible entre deux fenêtres « xterm », c’est à
dire potentiellement entre deux fichiers de deux machines distinctes.

Sur certaines émulations, il sera impossible d’utiliser le « pavé
numérique »
du clavier.

 

 

 

 

A. Lancement de l’éditeur

 

  • vi fichier Appel classique de l’éditeur
  • vi Appel sans nom de fichier ( il faudra donner un nom en
    quittant le programme )
  • vi +n fichier Appel de l’éditeur en se positionnant
    directement sur la ligne n
  • vi fic1 fic2 .... Appel avec plusieurs noms de fichiers (
    possibilité de changer de fichier courant )
  • view fichier Appel de l’éditeur en lecture seule
  • vedit fichier Appel de l’éditeur en mode « bavard » (
    visualisation en bas de l’écran du mode courant )

 

 

 

Déplacements ( la notation « n » indique un nombre )

 

 

 

Déplacements élémentaires

 

 

h ou nh Une ou n position(s) vers la gauche

j ou nj Une ou n position(s) vers le bas

k ou nk Une ou n position(s) vers le haut

l ou nl Une ou n position(s) vers la droite

( On peut aussi, en général, utiliser les flèches )

 

 

Autres déplacements

 

Aller en début de ligne   Ctrl d  Descendre d’une moitié d’écran
$ Aller en fin de ligne   Ctrl u Remonter d’une moitié d’écran
b Aller sur le mot précédent   Ctrl f D escendre d’un écran
Aller sur le mot suivant   Ctrl b  Remonter d’un écran
nG Aller àla ligne n      
1G Aller en début de fichier      
G Aller en fin de fichier      

 

 

Insertion et modification de texte ( la notation « n » indique un nombre )

 

a

 Insertion après le caractère courant

A  Insertion en fin de ligne
Insertion ava nt le caractère courant
I  Insertion en début de ligne
o Insertion d’une nouvelle ligne après la ligne courante
O  Insertion d’une nouvelle ligne avant la ligne courante

Escape Retour au mode commande

 

Suppression du caractère courant
X Suppression du caractère précédent
D  Suppression de la fin de ligne
dw ou ndw  Suppression d’un ou n mot(s)
dd ou ndd Suppression d’une ou n ligne(s)
r Remplacement du caractère courant ( on tape le nouveau caractère, « Escape » inutile ensuite )
cw  Remplacement du mot courant ( l’éditeur visualise la fin du mot par le caractère $ ,on tape la nouvelle chaîne et on termine par « Escape » )
C  Remplacement jusqu’àla fin de ligne ( même manipulation que le « cw » )
R Mode « sur-impression » ( on termine par « Escape  » )
J  Concaténation ligne courante - ligne suivante

 

 

Recherches d’expressions

 

/expression Recherche en avant de l’expression
 ?expression Recherche en arrière de l’expression
n Chercher l’occurrence suivante
N Chercher l’occurrence précédente

 

 

Substitutions répétitives ( mode « commande syntaxique » )

 

:s/expr1/expr2/ Sur la ligne courante, remplacer, une seule fois, « expr1 » par « expr2 »
:s/expr1/expr2/g  Sur la ligne courante, remplacer, plusieurs fois si nécessaire, « expr1 » par « expr2 »
:n,ms/expr1/expr2/ Idem mais entre les lignes de numéro « n » à« m », une seule fois
:n,ms/expr1/expr2/g  Idem, mais plusieurs fois si nécessaire

 La ligne courante se note alors « . » ( point) ,la dernière
ligne se note alors « $ » ( dollar ) 

 

B. Les expressions « régulières »

 

Comme bon nombre d’utilitaires Unix, notamment les filtres ( chapître 6 ),
l’éditeur « vi »

implémente les expression dites régulières qui permettent d’exprimer une
sémantique

supplémentaire par rapport aux expressions littérales.

 

^ Début de ligne
$ Fin de ligne
. Présence d’un caractère quelconque
[ensemble_caractères] Un caractère parmi un ensemble donné
[^ensemble_caractères] Un caractère ne figurant pas dans l’ensemble
caractère Un nombre quelconque d’apparitions du caractère ( éventuellement aucune apparition )
&  Dans une substitution, reprendre la première expression ( ceci permet l’expansion d’une expression )
   Annuler la sémantique d’un caractère dans l’expression
.*  Notation pratique pour désigner la ligne complète

 

 

Exemples

/toto *$ Recherche, vers le bas, d’une ligne se terminant par la chaîne « toto » suivie d’un nombre quelconque d’espaces.
 ?^[0-9] Recherche, vers le haut, d’une ligne commençant par un chiffre.
 :.,$s/admin/admin-sys/g Remplacer, depuis la ligne courante jusqu’àla fin du fichier, toutes les apparitions de la chaîne « admin » par la chaîne « admin-sys ».
:1,$s/[0-9]/ & /g Dans tout le fichier, ajouter un espace autour de chaque chiffre.
:1,$s/\^/A/ Dans tout le fichier, remplacer le caractère ^ par la lettre A,ceci une seule fois par ligne.
:s/.*/$&$/ Ajouter un dollar en début et en fin de la ligne courante.
:1,$s/.*/$&$/ Ajouter un dollar en début et en fin de toutes les lignes du fichier.

 

 

 

C. Divers fonctions

 

Dupliquer ou déplacer un ensemble de lignes ( la notation « n » indique un
nombre )

 

Y On mémorise la ligne courante dans le « buffer sans nom »
nY  On mémorise les n lignes courantes dans le « buffer sans nom »
p ( minuscule ) On restitue le contenu du « buffer » après la position courante
P ( MAJUSCULE ) On restitue le contenu du « buffer » avant la position courante

 

Les commandes de suppression ( dd , x , X ... ) stockent également dans le
« buffer ». On peut effectuer alors un déplacement au lieu d’une
duplication. Il est possible d’utiliser des « buffers nommés » ( a-z ).

 

Exemple

 

"a5Y 5 lignes stockées dans le buffer a puis "ap Duplication de
ces 5 lignes après la ligne courante

Le contenu des « buffers nommés » est conservé entre plusieurs fichiers
d’une même session vi, ce qui n’est pas le cas du « buffer sans
nom ».

 

 

Autres commandes utiles

 

Annuler la dernière commande
Répéter la dernière commande
Ctrl g Afficher le numéro de la ligne courante
 : ! commande Exécuter une commande Unix et revenir dans l’éditeur
 !! commande Insérer le résultat d’une commande ( la ligne courante est écrasée )
Ctrl l ou Ctrl r  Rafraîchissement de l’écran

 

 

 

Sorties et sauvegardes

 

:q ou :q !  Sortir sans prendre en compte les modifications
ZZ ou :wq ou :x  Sauvegarder avec le nom d’entrée et sortir
:x !  Forcer la sauvegarde sur un fichier en lecture seulement ( uniquement pour le login « root » )
:w  Sauvegarder sans sortir
:w fic  Sauvegarder sous le nom « fic »
:n1,n2w fic  Sauvegarder les lignes de numéros n1 àn2 dans le fichier « fic »
:r fic  Insérer après la ligne courante, le contenu du fichier « fic »

 

 

Edition de plusieurs fichiers

 

:e fic  Editer le fichier « fic »
:e ! fic  Editer le fichier « fic » sans sauvegarder les modifications sur le fichier courant
:e# Retour àl’édition du fichier précédent

 

 

Si appel de l’éditeur avec plusieurs noms de fichiers ,

 

:n  Editer le fichier suivant
:n !  Editer le fichier suivant sans sauvegarder les modifications

 

D. Paramétrage de l’éditeur

 

 

Paramétrage ponctuel

 

:set all  Liste des options ( détail dans « man ex » )
:set  option Activer une option ( Exemple :set autoindent )
:set nooption  Inhiber une option ( Exemple :set nonumber )
:set option=valeur  Exemple :set tabstop=4 

 

On peut abréger le mot « set » en « se » ainsi que le nom de l’option s’il
n’est pas ambigu.

Exemples

:set number  Afficher les numéros de lignes
:se nu  Idem
:se nonu Opération inverse

 

 

 

Paramétrage permanent

 

On peut constituer un fichier .exrc dans son répertoire de
connexion
. L’éditeur exécute le contenu de ce fichier àchaque appel.

Exemple de contenu de fichier

set redraw  Corriger les défauts d’affichage sur certains terminaux
set number Activer la numérotation de ligne
set autoindent  Activer l’indentation automatique
set showmode  Mode « bavard »

 

E. Memo

 

 


Statistiques

Dernière mise à jour

mercredi 4 octobre 2023

Publication

273 Articles
Aucun album photo
Aucune brève
6 Sites Web
2 Auteurs

Visites

31 aujourd’hui
213 hier
864520 depuis le début
7 visiteurs actuellement connectés