Vi

Un article de Haypo.

Retour à la page précédente Retour aux logiciels libres

Logo de l'éditeur de texte vim

vi est l'éditeur de texte universel sous Unix. Je dis universel car on a 99,9% de chance de le trouver sur un ordinateur sous Unix. Il est d'ailleurs souvent le seul recours pour éditer un fichier sur un ordinateur à distance (Emacs est trop lourd et un éditeur graphique serait impensable). Son nom vient de visual car c'était un des premiers (le premier ?) éditeur vraiment « visuel ». Ses ancêtres traitaient les fichiers ligne par ligne, je vous raconte pas comment c'était convivial :-)

Sommaire

[modifier] Présentation

Il existe en fait plusieurs versions de cet éditeur vieux comme ... Unix (années 1970) :

  • vi : la version originale, que je vous déconseille vivement
  • vim : version améliorée de vi
  • gvim : vim intégré dans l'environnement Gnome

vim est plus simple à utiliser car on peut utiliser les touches retour chariot, les touches flêchées, et la touche suppression en mode commande ou insertion sous soucis.

Il existe un gros troll entre vi et emacs. Personnelement, j'ai testé les deux. Après avoir utilisé Emacs pendant plus d'un an et demi, je suis passé à gvim. Ce dernier se lance plus rapidement :-) Les deux sont très proches au niveau des fonctionnalités, mais diffèrent au niveau du lancement de commandes. Dans tous les cas, il faut au moins un mois d'apprentissage pour espérer travailler efficacement avec ces éditeurs de texte.

[modifier] Mode commande

  • dd : Couper la ligne (d pour delete)
  • d$ : Couper le texte situé entre le curseur et la fin de la ligne
  • p : Coller le texte après le curseur (p pour paste)
  • P : Coller le texte à la position du curseur
  • o : Débute (ouvre) une nouvelle ligne après le curseur (o pour open?)
  • O : Débute (ouvre) une nouvelle ligne avant le curseur
  • u : Annuler la dernière modification (u pour undo)
  • gg : Aller au début du texte (g pour goto)
  • G : Aller à la fin du texte
  • v : Passer en mode visuel (v pour visual)
  • == : Indente la ligne courante (gg=G indente le fichier entier)
  • z <entrée> : Place la ligne sous le curseur en haut de la fenêtre
  • z <touche fléchée> : Déplacement du contenu du fichier

Astuce : Les commandes vi peuvent être précédées d'un nombre (4dd coupe 4 lignes), ou suivie d'un déplacement (dd<bas> coupe la ligne courante plus la ligne du bas, =G indente de la position courante à la fin du fichier).

[modifier] Mode visuel

Se déplacer, puis tapez "y" (y pour yank?) pour copier. Echappe pour revenir en mode commande sinon.

[modifier] Mode insertion

Si une commande est interdite (comme ouvrir un nouveau fichier alors que le tampon actif est modifié sans avoir été sauvegardé), on peut ajouter "!" à la commande pour contourner l'avertissement. "e! <fichier>" force l'ouverture d'un fichier et "bd!" force la fermeture d'un tampon sans le sauvegarder.

[modifier] Commandes

  • / : Lance une recherche
  • % : Aller à la parenthèse, accolade, (...) correspondante
  • n : Recherche l'occurence suivante
  • N : Recherche l'occurence précédente
  • * : Recherche le mot sous le curseur
  • q : Quitter
  • gu<direction> : Conversion en minuscule (guw conversion d'un mot)
  • gU<direction> : Conversion en majuscule

[modifier] Fichier et répertoire

  • w <fichier> : Sauve le tampon dans un fichier (w pour write)
  • w : Sauve le fichier courant
  • e <fichier> : Ouvrir un fichier (e pour edit)
  • cd <répertoire> : Change de répertoire (cd pour change directory)
  • pwd : Affiche le répertoire courant (pwd pour print working directory)

[modifier] Gestion des tampons et fenêtres

  • bd : Ferme le tampon (bd pour buffer delete)
  • ls : Liste des tampons (ls pour list buffers)
  • b<numéro> : Passe au tampon spécifié (se référé à la commande ls)
  • b# : Retour au tampon précédé
  • split : Découpe le tampon horizontable
  • vs : Découpe le tampon verticalement (vsplit pour vertical split)
  • CTRL+w <touche flêchée> : Se déplace d'un tampon à un autre (CTRL+W suivi de droite se déplace dans le tampoon de droite)
  • CTRL+w o : Ferme les autres fenêtres (o pour others)
  • close : Ferme la fenêtre courante
  • CTRL+w r : Fait rouler les tampons (a|b|c => c|a|b puis b|c|a)
  • CTRL+w K / CTRL+w J : déplace le tampon tout en haut / tout en bas

[modifier] Divers

  • set syntax=on : Active la coloration syntaxique
  • set wrap / set nowrap : Activer/désactiver le retour à la ligne
  • set tabstop=4 : Changer la taille d'une tabulation
  • set autoindent : Activer l'auto-indentation
  • set fileencoding=iso-8859-1 : Change l'encodage dans lequel est sauvegardé le document
  • %s/<avant>/<apres>/g : Remplace une expression régulière par un motif de remplacement sur l'ensemble du document. Options utilisable (après le dernier /) :
    • g : Remplace toutes les occurences
    • p : Affiche ce qui a été remplacé
    • c : Demande confirmation pour chaque remplacement effectué
  • /motif/d : Supprime les lignes correspondant à l'expression régulière spécifiée
  •  !<commande> : Lance une commande externe (ex: "!grep chaine *" lance la commande grep sur les fichiers du répertoire courant)
  • CTRL+G : Affiche les informations sur le tampon (nom du fichier, nombre de lignes, etc.)
  • <nombre> : Se déplace au numéro de ligne spécifié
  • set nu : Active la numérotation des lignes
  • set nu! : Active/désactive la numérotation des lignes

[modifier] Fichier de configuration

Le fichier de configuration est en fait une ligne de commande en mode insertion. Il suffit donc d'y écrire une commande par ligne sans le ":". Exemple de fichier :

 set syntax=on
 set tabstop=8

Les commentaires sont précédés de « " ». Tout ce qui suit est considéré comme commentaire jusqu'à la fin de la ligne.

Voir mon fichier ~/.vimrc.

[modifier] Astuces

[modifier] Répéter un caractère

Pour insérer 77 fois le caractère « i », utilisez les touches suivantes :

i - echappe 77 .

La commande « . » répète la dernière action qui est ici l'insertion d'un caractère.

[modifier] Unicode

Commandes :

  • ga affiche les informations sur le caractère sous le curseur
  • g8 affiche la séquence d'octets (du fichier) représentant le caractère sous le curseur
  • set isprint=@,161-255 : définit les intervalles de caractère affichables (voir aussi isfname)

En mode insertion, tapez CTRL+v pour insérer n'importe quel caractère à partir de son code en décimal. Exemple « CTRL+v 1 6 0 » insère un espace insécable (Unicode U+00A0, 160).

[modifier] Voir aussi

[modifier] Articles connexes

[modifier] Liens externes