Votre IP: 38.107.179.241 
  
 
Google
 
Accueil e-mail Linux
Linux
Perl
Perl
C
Langage C
Dico
Dictionnaire
Biblio liens
Bibliothèque de liens
Index articles
Index articles
 

Date création : 29-10-2007 00:00:00
Date de la dernière modification : 13-04-2008 21:10:49
Linux  Vous êtes dans : GNU/Linux Astuces / Editeurs de texte

L'editeur de texte Vi (VIM - Vi amélioré)



I. Les modes d'exécution
II. Le mode commande
        1. Le déplacement
        2. Recherche
        3. Numérotation de lignes
        4. Modification, suppression
III. Le mode insertion
        1. Insertion de texte
        2. Ecriture et quitter
        3. Interagir avec le Shell
IV. Le mode ex
        1. Les adresses
        2. Les commandes ex

 


Vi (Vim - Vi amélioré) c'est un éditeur de texte très puissant, en même temps c'est vrai qu'il n'est pas très convivial.
Toutefois la connaissance de Vi(m) peut être très utile, puisqu'il est installé sur tout système GNU/Linux et il peut être utilisé en ligne de commande.
Imaginez-vous qu'un jour, à cause d'une mauvaise manipulation ou d'une coupure de courant, vous ne pouvez plus accéder à votre interface graphique.
En ce cas si jamais vous avez besoin d'éditer un fichier pour corriger le problème sachez que vi peut vous sortir de pétrin.
De même il peut arriver d'être devant un PC qui n'a pas l'interface graphique installée.

Les modes d'exécution

L'éditeur Vi peut être utilisé en 3 modes :
  • le mode commande
                A l'ouverture de VI c'est le mode commande qui est activé
  • le mode insertion
                Dans ce mode nous pouvons insérer, supprimer et aussi nous déplacer
  • le mode de commande ex
                Exécuter des commandes spécifiques à vi ainsi que des commandes système

 

Le mode commande

Le mode commande c'est le mode par défaut. Quand vous allez taper sur les touches indiquées par les raccourcis l'action correspondante sera exécutée.

Le déplacement

Les Caractères
 
 CommandeAction 
h
 Gauche
 j  Bas
 k  Haut
 l  Droite
 touche ESPACE
 Droite
 touche Ret.Arr
 Gauche
←   Gauche
 →  Droite
 ↑  Haut
 ↓  Bas


Le texte

 
 Commande Action
 w  avance d'un mot (séparateur la ponctuation) 
 b  recule d'un mot (séparateur la ponctuation)
 W  avance d'un mot (séparateur : les caractères blanc, espace, tabulation)
 B  recule d'un mot (séparateur : les caractères blanc, espace, tabulation)
 e  fin du mot (séparateur la ponctuation)
 E  fin du mot (séparateur : les blancs - espace, tabulation)
 ge  fin du mot précédent (séparateur la ponctuation)
 gE  fin du mot précédent (séparateur : les blancs - espace, tabulation
 ),(  début de la phrase courante
 },{  début du paragraphe courant 

Les lignes

Commande
Action 
0  début de ligne 
 g0  début de ligne
 $  fin de ligne
 g$  fin de ligne
 ^  1er caractère non-blanc de la ligne courante
_  1er caractère non-blanc de la ligne courante
 +  1er caractère de la ligne suivante 
 -  1er caractère de la ligne précédente
 ENTRER  1er caractère non-blanc de la ligne suivante
 n|  la colonne n de la ligne courante
 gk  déplacement vers le haut
 gj  déplacement vers le bas 
 H  ligne supérieure de l'écran
 M  ligne centrale de l'écran
 L  dernière ligne de l'écran 
 nH  nième ligne en partant du haut de l'écran
 nL  nième ligne en partant du bas de l'écran
 Ctrl-G  affiche le nom du fichier et le numéro de la en cours
 gg  1ère ligne du fichier
 G  dernière ligne du fichier
 nG  nième ligne du fichier

 

La Recherche

Motif peut être un mot littéral ou une expression régulière.

Commande
Action 
 /motif/  recherche le motif dans le texte
 /  répéter la recherche précédente
 /motif/+n  aller à la nième ligne correspondant au motif
 ?motif  recherche en arrière du motif
 ?  répéter en arrière la recherche du motif
 n  répéter la recherche précédente 
 N  répéter la recherche précédente dans le sens opposé 
%
 trouver la correspondance des paranthèses, accolades (pratique pour la programmation)
:
 recherche le mot exact placé sous le courseur (Vim)


Numérotation des lignes


 CommandeAction 
Ctrl-G
 affiche le nom du fichier et le numéro de ligne
 gg  atteindre la 1ère ligne du fichier
 nG  atteindre la nième ligne du fichier
 G  atteindre le dernière ligne du fichier
 :n  atteindre la nième ligne du fichier


Modification, suppression


 CommandeAction
 dd
 suppression de la ligne courante
 d$  suppression de la ligne après le curseur
 D  la même chose que d$
 ndd  suppression n lignes 
 dw  suppression d'un mot
 d}  suppression de reste du paragraphe
 d^  suppression jusqu'au début de la ligne
 d/motif/   suppression du texte jusqu'au motif
 dfa  suppression jusqu'au caractère a inclu (a designe un caractère quelconque)
 dta  suppression jusqu'au caractère a exclus
 dL  suppression jusqu'à la dernière ligne de l'écran
 dG  suppression du reste du fichier
 p  insertion après le curseur du texte précédement supprimé ou copié
 rx  remplace le caractère courant par le caractère x (x designe un caracère quelconque)
 Rtexte  remplacement par texte à partir du curseur
 s  substitution de caractère
 ns  substitution de n caractère
 S  substitution de la ligne entière
 u  annulation de changement précédent
 x  suppression du caractère courant
 X  suppression du caractère précédent
 nX  suppression du n caractères précédents
 ~  changement de la casse de caractères
 "yy

 copier la ligne courante dans le tampon x 

 "xdd  suppression de la ligne courante et la stocke dans le tampon x
 "xyy  copier la ligne courante dans le tampon x
 "xp  coller le texte du tampon x
 J  joindre la ligne suivante à la ligne courante




Le mode insertion

Insertion du texte

Commandes pour passer en mode insertion

 CommandeAction 
 a  ajoute après le curseur
 A  ajoute à la fin de la ligne
 i  insertion avant le curseur
 i  insertion à l'emplacement de 1er caractère non-blanc de la ligne
 gl  insertion au début de la ligne
 o  création nouvelle ligne sous la ligne courante
 O  création nouvelle ligne au-dessus de la ligne courante
 ECHAP  Quitte le mode insertion



Commandes qui fonctionnent en mode insertion

 CommandeAction 
 TAB  insertion tabulation
 Ret.Arr  supprime le caractère précédent
 Ctrl-E  insertion du caractère situé sous le curseur (vim)
 Ctrl-Y  insertion du caractère situé au-dessus du curseur (vim)
 Ctrl-H  suppression caractère précédent
 Suppr  suppression caractère courant 
 Ctrl-W  supprime le mot précédent (vim)
 Ctrl-A  reproduction de la dernière insertion (vim)
 Ctrl-I  insertion tabulation
 Ctrl-T  indentation d'une ligne (vim)
 Ctrl-D  déindentation d'une ligne (vim)
 Ctrl-U  suppression de la ligne courante
 Ctrl-[  Quitte le mode insertion



Ecriture et quitter


 CommandeAction 
 ZZ  quitte vi et écrit le fichier seulement s'il y a des modifications
 :x  même chose que ZZ
 :wq  écrire le fichier et quitte
 :w  écrire le fichier sans quitter vi
 :w fichier
 écrire le fichier courant dans fichier
 :n1,n2w fichier
 écrire les lignes de l'intervalle n1,n2 dans fichier
 :n1,n2w >> fichier
 ajouter les lignes de l'intervalle n1,n2 dans fichier 
 :w!  forcer l'écriture du fichier
 :w! fichier
 écrase le fichier avec le tampon courant
 :w %.save  écrire le fichier courant en fichier.save
 :q  quitte vi 
 :q!  quitte vi en annulant les changements
 Q  passe en mode ex
 :vi  retour en mode commande


Interagir avec le shell


 CommandeAction 
 :r fichier
 place le contenu du fichier dans le tampon courant
 :r !commande
 écrire après la ligne courant le résultat de la commande shell
 :nr !commande
 écrire à la nième ligne le résultat de la commande shell
 :! commande
 lance une commande et revenir à l'édition
 Ctrl-Z  mettre vi en arrière plan; la commande fg permet de revenir




Le mode ex

Pour le lancement d'une commande ex avec vi utilisez la syntaxe

  • :[adresse] commande [options]

: c'est le début d'une commande ex
[adresse] peut être un numéro de ligne ou un intervalle de lignes

Les options

  • ! indique que la commande outrepasse le fonctionnement normal
  • nombre le nombre des fois que la commande s'applique
  • fichier le fichier sur lequel la commande est appliquée

Les adresses


 CommandeAction 
 1,$  toutes les lignes
 %  même chose que 1,$
 x,y  de la ligne x à la ligne y
 0  début du fichier
 .  ligne courante
 n  ligne n
 $  denrière ligne
 n-x  n lignes avant la ligne x
 x+n  n lignes après la ligne x 
 -[n]  n lignes avant la ligne courante
 +[n]  n lignes après la ligne courante
 /motif/  lignes suivantes jusqu'à la ligne qui contient le motif
 ?motif?  lignes précédentes jusqu'à la ligne qui contient le motif


Les commandes ex


 CommandesAction 
 ab [chaîne texte] Nom complet : abbrev

Définir une abréviation pour texte, chaîne étant l'abréviation. La commande :ab sans options affiche les abréviations

Ex :
:ab tmp temporaire

Quand vous tapez tmp c'est temporaire qui sera écrit
 [address] a[!] Nom complet : append

Ajoute du texte à l'adresse spécifié ou à l'adresse courante si aucune adresse n'est spécifée, ! c'est pour l'auto-indentation. Après la commande saisissez le texte.
Pour terminer il faut saisir une ligne qui contiendra un point uniquement. 


Ex 1: pas d'adresse, donc l'insertion sera faite après la ligne courante 

:a faire Entrer et commencez la saisie du texte
Voici le texte saisie après la ligne courante
.


Ex 2 : avec adresse spécifiée

 :2 a
Le texte sera inséré
après la ligne 2
 cd répertoire Nom complet : cd

Changer du répertoire dans vi

:cd /chemin vers repertoire
 [adresse] c[!] texte Nom complet : change

Remplacer la ligne spécifée avec le texte. ! pour activation du mode auto-indentation. Pour finir la saisie, il faut saisir une ligne contenant un point seulement. 

Ex:

:2 c Ici vous faites Entrer et commencer la saisie
Texte qui va remplacer
la ligne 2
 [adresse] co destination Nom complet : copy

Copier les lignes designées par adresse à la destination

Ex: copier les lignes de 10 à 20 après la ligne 30

:10,20 co 30 
 [adresse] d |tampon] Nom complet : delete

Supprimer les lignes designées par adresse

Ex: supprime la ligne 10

:10 d 
 f [nom fichier] Nom complet : file

Renommer le nom du fichier courant

:f nouveau_fichier 
 h Nom complet : help

Affiche l'aide

:h 
 [adresse] i[!] Nom complet : insert

Insertion du texte à la ligne précédant l'adresse

 :2 i   Ici vous faites Entrer et commencer la saisie
Texte à rajouter
 [adresse] j[!] [nombre] Nom complet : join

Joindre les lignes.

Ex: joindre les lignes 5 à 10

:5,10j
 [adresse] le [nombre] Nom complet : left

Alignement à gauche si nombre est omis sinon la ligne est indentée avec nombre espaces

Ex : indenter la ligne de 2 à 5 avec 4 espaces

:2,5 le 4
 [adresse] m destination Nom complet : move

Déplacer les lignes designées par adresse à la destination

Ex: déplacer les lignes de 10 à 20 après la ligne 30

:10,20 co 30
 noh Nom complet : nohlsearch

Désactive la mise en surbrillance des résultats de la recherche quand l'option hlsearch est positionnée (vim)

 

 [adresse] nu [n] Nom complet : number

Affiche les lignes spécifiées par adresse, n spécifie le nombre de lignes à afficher.
 q[!] Nom complet : quit

Quitter vi. ! pour ne pas enregitrer les modifications.
 [adresse] r fichier Nom complet : read

Copier le contenu du fichier après l'adresse.

 :3 r /chemin/vers/repertoire/test.txt  

le contenu du fichier test.txt est ajouté après la ligne 3 du fichier courant 
 [adresse] r !commande Nom complet : read

Copier le résultat da commande après l'adresse.

 :3 r !ls -l /chemin/vers/repertoire  

le résultat de la commande est ajouté après la ligne 3 du fichier courant
 red Nom complet : redo

Rétablir les dernière annulations.
 sh Nom complet : shell

Lance un shell
 so fichier
Nom complet : source

Lire et exécuter les commandes ex situées dans fichier 
 st Nom complet : stop

Mettre vi en arrière plan. La commande fg permet de remettre vi en avant plan
 [adresse] s [/motif/remplacement/] [options] [n] Nom complet : substitute

Remplacer le motif avec la chaîne remplacement. Le motif peut être un mot littéral ou une  expression régulière

Les options :
c - demande de confirmation avant d'effectuer les changements
g - substitution globale

Ex :

:10,20s/nom/prenom/g

remplacement du mot nom avec le mot prenom sur les lignes de 10 à 20 
 su Nom complet : suspend

La même chose que st
 [adresse] t destination Nom complet : t

La même chose que c
 u Nom complet : undo

Annulation de la dernière commande
 ve Nom complet : version

Affiche la version du Vi
 wq[!] Nom complet : write

Ecrire et quitte l'édition
 [adresse] !commade Nom complet : !

Exécute la commande dans le Shell
[ adresse] Nom complet : address

Aller à la ligne specifiée par l'adresse
 & [options] [n] Nom complet : &

Répéter la commande de substitution précédente, n étant le nombre de lignes sur lesquelles la commande sera exécutée.

Création : octobre 2007  © Tous droits réservés 2007 linux-perl-c
Valid HTML 4.01 TransitionalValid CSS