Description

vi est un des plus anciens éditeurs de texte sous Unix. Certains utilisateurs de Unix ne peuvent pas s'en passer... D'autres trouvent que vi est beaucoup trop difficile à utiliser... Choisissez votre camp !

Résumé des sous-commandes et exemples

  • Syntaxe : vi nom_fichier
  • Commandes d'insertion de texte
 i 	   insert 	insertion avant le curseur
 I 	   insert 	insertion au début de la ligne
 a 	   append 	insertion après le curseur
 A 	   append 	insertion à la fin de la ligne
 o 	   open 	ouvre une ligne blanche en dessous de la ligne courante
 O 	   open 	ouvre une ligne blanche au dessus de la ligne courante
 ctrl v     insert 	insertion d'un caractère de contrôle	
  • Pour abandonner le mode insertion et retourner au mode commande, appuyer sur la touche <Echap>
  • Commande de concaténation
 J 	concatenate 	concatène la ligne suivante à la fin de la ligne courante
  • Commandes de déplacements
 /\ 	   curseur 	déplacement d'une ligne vers le haut
 \/ 	   curseur 	déplacement d'une ligne vers le bas
 <=  	   curseur 	déplacement d'un caractère vers la gauche
 => 	   curseur 	déplacement d'un caractère vers la droite
 w 	   word 	avance au début du mot suivant
 b	   word 	avance au début du mot précédent
 e	   word 	avance à la fin du mot courant ou suivant
 ctrl f     forward 	page suivante
 ctrl b     backward 	page précédente
 ctrl d     forward      descend d'une demi-page
 ctrl u     backward     monte d'une demi-page
 ctrl e     forward      descend d'une ligne
 ctrl y     backward     monte d'une ligne
 ^ ou 0 	                début de la ligne courante
 $                       fin de la ligne courante
 G                       fin du fichier
 l                       déplacement d'un caractère vers la droite
 h                       déplacement d'un caractère vers la gauche
 k                       déplacement d'un caractère vers le haut, même colonne
 j                       déplacement d'un caractère vers le bas, même colonne
 SPACE                   déplacement d'un caractère vers la droite
 BACKSPACE               déplacement d'un caractère vers la gauche
 -                       déplacement vers le début de la ligne supérieure
 +                       déplacement vers le début de la ligne inférieure
 RETURN                  déplacement vers le début de la ligne inférieure
 )                       déplacement vers le début de la phrase suivante
 (                       déplacement vers le début de la phrase courante ou précédente
 {                       déplacement vers le début du paragraphe suivant
 }                       déplacement vers le début du paragraphe courant ou précédent
  • Recherche d'une chaîne de caractères
 /toutou           recherche la chaîne "toutou" à partir de la position actuelle du curseur 
                      vers le bas du fichier
 ?toutou           recherche la chaîne "toutou" à partir de la position actuelle
                      du curseur vers le haut du fichier
 n 	   new    recherche la prochaine occurence de la chaîne "toutou"
                      recherche vers le bas du fichier
 N 	   new    recherche l'occurence précédente de la chaîne "toutou"
                      recherche vers le haut du fichier
  • Suppression et utilisation du buffer
 x 	  	  suppression du caractère sous le curseur
 X 	  	  suppression du caractère précédent le curseur
 dd 	delete    suppression de la ligne courante
 D       delete    suppression du curseur jusqu'à la fin de la ligne
 yy 	yank 	  copie la ligne courante dans le buffer
 p 	paste 	  colle la ligne contenu dans le buffer après la ligne courante
 P 	paste 	  colle la ligne contenu dans le buffer avant la ligne courante		
 ctrl h            suppression du caractère à gauche du curseur
 ctrl w            suppression du mot à gauche du curseur
 ctrl u            suppression de la ligne courante

 Les commandes  x, X, dd, et yy peuvent être précédées d'un facteur multiplicateur
 de leur action. Par exemple  7dd  supprimera la ligne courante et les 6 lignes suivantes.
  • Remplacement
 r 	replace      remplace le caractère sous le curseur par un nouveau caractère 
 s	replace      remplace le caractère sous le curseur par de nouveaux caractères
                          pour terminer appuyer sur la touche <Echap>
 R 	replace      remplace tous les caractères par de nouveaux caractères
                          pour terminer appuyer sur la touche <Echap>
 C 	change 	     remplace depuis le curseur jusqu'à la fin de la ligne par de 
                          nouveaux caractères.  Pour terminer appuyer sur la touche <Echap>
 cw       change      remplace le mot courant par de nouveaux caractères
                          pour terminer appuyer sur la touche <Echap>
 cc       change      remplace la ligne courante par de nouveaux caractères
                          pour terminer appuyer sur la touche <Echap>
  • Défaire et répéter le changement
 u 	undo 	  annule la dernière commande et seulement la dernière
 .       répète    répète le changement précédent
  • Expressions régulières et mode commande globale
 Les expressions régulières servent à manipuler le fichier texte dans son ensemble.
 . 	représente un caractère quelconque 
 * 	multiplicateur du caractère précédent
 ^ 	début de ligne
 $  	fin de ligne ou fin de fichier
 %        représente de la première à la dernière ligne (abbréviation pour 1,$)
 \ 	permet de représenter les caractères . * ^ $
                en le mettant devant. Exemple : \* ou \$
 \1 	permet la réécriture de l'expression régulière lors d'une substitution
 s 	commande de substitution
 d 	commande de destruction de lignes
 : 	passage en mode commande globale
 g 	parcours global du fichier ou de la ligne
  • Exemples :
 :1,$s/neant/bof/g    de la ligne 1 à la dernière ligne, substitution de la chaîne neant 
                                 par la chaîne  bof
 :1,$s/neant/bof/     idem mais seulement pour la première occurence de la chaîne neant par ligne
 :1,3s/^.*=/BRAVO/    de la ligne 1 à la ligne 3, substitution du début de la ligne (^) jusqu'au
                        (.*) caractère = par la chaîne  BRAVO
 :1,$s/B.*O/\1 Veinard/  rajoute aux mots commençant par B et terminant par O, le mot "Veinard"
 :1,$s/.$// 	        suppression du dernier ($) caractère quel qu'il soit (.)
 :10,20d 	        suppression des lignes 10 à 20 
 :g/^#/d 	        suppression des lignes commençant par un #
 :g/ctrl v ^M/s//ctrl v return/g 	suppression des ^M en milieu de ligne et substitution 
                        par un vrai retour à la ligne.  Taper sur "Enter" pour obtenir le 'return'.
  • Divers mais utiles
 :set showmode 	        indique le mode (insertion ou commande) en bas de la fenêtre 
 :set number 	        affiche le numéro de chaque ligne
 :155 	                positionne sur la ligne 155
 :set filetype=unix      transforme le type DOS d'un fichier en type UNIX
 ctrl l                  rafraîchit l'écran
 ctrl g                  donne des informations (positionnement, nom du fichier, ....)
 :n                      édite le fichier suivant si de multiples fichiers ont été donnés en
                                   argument de la commande vi
  • Sauvegarder et quitter
 :w 	write 	sauvegarde le fichier en cours d'édition 
 :q 	quit 	abandonne l'édition
 :q! 	quit 	abandonne l'édition sans sauvegarder le fichier 
 :x 	exit 	sauvegarde le fichier en cours d'édition et abandonne l'édition
 (idem  :wq ou ZZ)

Informations complémentaires

Trucs et astuces

Il existe une version "graphique" de vi dont le nom est gvim