Vi/Version imprimable

< Vi

Ceci est la version imprimable de Vi.
  • Si vous imprimez cette page, choisissez « Aperçu avant impression » dans votre navigateur, ou cliquez sur le lien Version imprimable dans la boîte à outils, vous verrez cette page sans ce message, ni éléments de navigation sur la gauche ou en haut.
  • Cliquez sur Rafraîchir cette page pour obtenir la dernière version du wikilivre.
  • Pour plus d'informations sur les version imprimables, y compris la manière d'obtenir une version PDF, vous pouvez lire l'article Versions imprimables.


Vi

Une version à jour et éditable de ce livre est disponible sur Wikilivres,
une bibliothèque de livres pédagogiques, à l'URL :
https://fr.wikibooks.org/wiki/Vi

Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la Licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans Texte de dernière page de couverture. Une copie de cette licence est incluse dans l'annexe nommée « Licence de documentation libre GNU ».

Découvrir Vi

Découvrir vi

modifier

Historique

modifier

L'éditeur vi (prononcez vi aïe) adhère aux principes des applications Unix : il remplit une fonction spécifique au mieux et s'intègre au reste du système, communiquant avec les autres applications pour s'associer leur capacités. Léger et portable, il peut toujours être présent, simple sur le système le plus basique ou amélioré sur un système habituel.

Bill Joy (Willam N. Joy (1954 -), co-fondateur de Sun Microsystems), étudiant à Berkeley, planche au cours de l'été 1975 sur des algorithmes dont la taille imposante (200 lignes) empêche une correcte implantation dans le cœur du système Pascal. À l'époque, l'éditeur couramment utilisé était ed et de nombreuses améliorations en étaient développées, dont em que George Coulouris lui procure. Em avait cependant quelques défauts, comme de ne pouvoir afficher que des majuscules, et Joy et Chuck Haley l'adaptent une première fois, le renommant ex. Joy travaillait sur un terminal proposant une vingtaine de lignes et sans retour possible, il lui fallait donc développer un éditeur plein écran mettant en mémoire les pages non affichées. Il fallait en outre qu'il puisse être utilisé au travers de son modem 300 baud. En quelques mois de 1976, il développe alors vi, qui sera distribué en 1978 avec la Second Berkeley Software Distribution (2BSD). Premier éditeur en plein écran, dont de nombreuses fonctionnalités ont été inspirées de Bravo, le premier WYSIWYG, vi est diffusé alors avec Unix et Pascal. Joy se désinteresse rapidement du maintien et laisse la suite du développement à Mark Horton.

Quelques sources sur les débuts de vi :

 
Logo de Vim.

Vim est une version évoluée et particulièrement répandue de vi.

En 1988, Bram Moolenaar commence le portage de vi sur son Amiga fraîchement acquis, « Stevie » est alors peu fonctionnel et particulièrement buggé, mais il se corrige progressivement et passe de « Vi IMitation » à « Vi IMproved. » Gardant une grande compatiblité avec vi, les nouvelles commandes s'ajoutent aux anciennes et permettent à chaque utilisateur une approche personnalisée du logiciel. Conçu dès l'origine comme un produit open-source, la plupart des développement de vim viennent des programmeurs qui l'utilisent. L'historique de vim par Moolenaar

Si son utilisation et sa diffusion sont gratuites, son auteur le diffuse comme charityware et vous invite à participer au développement du sud de l'Ouganda et à venir en aide aux orphelins du SIDA de cette région par des dons à l'ICCF. Vous pouvez également aider cette association caritative, en achetant chez Amazon le livre de Moolenaar sur vim, des DVD du Seigneur des anneaux ou d'autres produits culturels ; en précisant que vous venez de leur part un pourcentage leur sera reversé : faire un don.

Quelques liens

modifier


Prise en main

Trois modes

modifier

Vi suit un principe de fonctionnement particulier qui est un frein à son apprentissage, mais qui ensuite lui donne tout son intérêt. À la différence de beaucoup d'éditeurs, vi a trois modes :

  • Mode édition
  • Mode commande
  • Mode exécution
 
Fonctionnement modal de vi : les trois modes.

Lorsque vi est en « mode édition », les touches du clavier correspondent au texte écrit dans le fichier, mais lorsqu'il est en « mode commande », ces mêmes touches correspondent aux commandes de l'éditeur. Et puisque vi est en « mode commande » à son démarrage, cela le rend non opérationnel pour l'édition et perturbe en général le novice.

Le basculement entre les trois modes se fait à l'aide de la touche 'i' (pour "insertion") et la touche <ESC>.

  • Pour basculer en « mode édition », tapez i.
  • Pour basculer en « mode commande », tapez <ESC>

En vim, on peut utiliser également la touche <INS> à la place de 'i'.


 

Gvim : exemple d'une fenêtre de vi

Une première séance de vi

modifier

Lancez vi sans arguments (tapez vi dans un terminal sous Unix, double-cliquez sous Windows). L'éditeur s'ouvre en mode commande et aucun fichier n'est ouvert, nous allons donc en ouvrir un pour l'éditer. La commande permettant d'ouvrir un fichier est :e, elle prend en argument le nom du fichier que l'on veut éditer, par exemple :

:e mon_beau_fichier

permet d'éditer le fichier appelé « mon_beau_fichier ».

Maintenant que nous avons un fichier ouvert, nous allons le remplir. Pour cela, nous devons passer en mode édition, ce qui peut être fait avec la commande i (insertion). Tapez seulement i, vi passe en mode édition, ce qui est signalé par le message :

-- INSERTION --

apparaissant en bas à gauche de la fenêtre. Tapez maintenant un texte que nous allons sauvegarder. Avant de pouvoir sauvegarder, nous devons retourner au mode commande, ce qui se fait grace à la touche <Echap>.

Maintenant que nous sommes revenus dans le mode commande, nous pouvons sauvegarder avec la commande :w (write en anglais).

Supposons maintenant que nous voulions modifier notre fichier, nous allons avoir besoin de nous déplacer ; dans vi, les déplacements se font uniquement en mode commande et avec les touches h, j, k et l. Cependant les versions modernes de vi telles que vim permettent de se déplacer avec les flèches et aussi de le faire en mode édition.

Une fois que nous avons effectué nos modifications et sauvegardé, nous pouvons quitter avec la commande :q (quitter).

Résumé des commandes de la leçon

modifier
Au lancement, vi est en « mode commande »
:e mon_beau_fichier édite le fichier mon_beau_fichier
le curseur peut alors se déplacer dans le fichier, avec les flèches ou avec les touches h, j, k et l
i passe en « mode édition » avant le curseur
le texte du fichier est alors modifiable
<ESC> passe du « mode édition » au « mode commande »
:w enregistre les modifications
:q quitte vi


Déplacements

Nous avons pour l'instant vu que nous pouvions nous déplacer avec les touches h, j, k et l (ou avec les fléches), chacune de ces commandes permettant de se déplacer d'un caractère (ou d'une ligne) respectivement vers la gauche, le bas, le haut ou la droite. Si nous voulons nous déplacer de plusieurs caractères (ou lignes), il suffit avant la commande de spécifier un nombre. Par exemple pour se déplacer de cinq caractères vers la gauche, il faut taper 5h.

Cette syntaxe n'est en fait pas spécifique aux commandes de déplacements, mais fonctionne avec toutes les commandes vi.

Résumé des commandes

modifier
déplacer le curseur dans le texte (les flèches sont également utilisables bien sur) :
h déplace le curseur vers la gauche
j déplace le curseur vers la droite
k déplace le curseur vers le haut
l déplace le curseur vers le bas
pour se déplacer dans la ligne :
0 (zéro) déplace le curseur au début de la ligne (^ indique le début de ligne pour les commandes)
$ déplace le curseur en fin de ligne
w déplace le curseur d'un mot vers l'avant
b déplace le curseur d'un mot vers l'arrière
pour se déplacer écran par écran :
<CTRL> f un écran vers l'avant
<CTRL> b un écran vers l'arrière
se déplacer dans le fichier :
nG va à la ligne n
G va à la fin du fichier


Débuter avec vi

Débuter avec vi

modifier

Quelques commandes simples et utiles

modifier
:u annuler
. réitère la dernière commande d'édition
/motif aller au motif suivant
?motif aller au motif précédent
n continuer la recherche vers le bas
N continuer la recherche vers le haut
dd « couper » la ligne courante
yy « copier » la ligne courante
P « coller » avant le curseur ce qui vient d'être copié/coupé
Attention, vi est sensible à la casse, il s'agit bien d'un P majuscule. Le p minuscule colle après le curseur.
:s/motif1/motif2 remplace motif1 par motif2 (1ère occurrence sur la ligne du curseur)
:s/motif1/motif2/g remplace motif1 par motif2 (toutes les occurrences sur la ligne du curseur)
:%s/motif1/motif2/g remplace motif1 par motif2 (toutes les occurrences dans tout le fichier, de la pemière à la dernière ligne)
:a,bs/motif1/motif2/g remplace motif1 par motif2 (toutes les occurrences entre les lignes "a" et "b" du fichier)

Manipuler les fichiers

modifier
Ouvrir un fichier avec vi
vi mon_beau_fichier ouvre mon_beau_fichier en lançant vi
:e mon_beau_fichier ouvre mon_beau_fichier
Ouvrir une série de fichiers avec vi
:n fichier1 fichier2 charge les fichiers fichier1 fichier2
:n passe au fichier suivant
:prev ou :N revient au fichier précédent
Ouvrir plusieurs fichiers dans la même fenêtre
:sp fichier2 divise la fenêtre et charge fichier2 dans la deuxième moitié
"CTRL + w" w passe d'une sous-fenêtre à l'autre. "CTRL + w" "CTRL + w" fonctionne aussi si vous relâchez la touche CTRL un peu tard
:close ferme la sous fenêtre courante
:only ferme toutes les sous fenêtres sauf la sous fenêtre courante
En cas de problème
:e! recharge le dernier enregistrement du fichier et abandonne les modifications
:q! quitte vi sans enregistrer les modifications
vi -r mon_beau_fichier récupère le fichier de sauvegarde temporaire de mon_beau_fichier (mon_beau_fichier.swp)
enregistrer et quitter
:w nouveau_nom enregistre le fichier sous nouveau_nom
:wq ou :x ou ZZ enregistre le fichier et quitte vi


Aller un peu plus loin

Aller un peu plus loin

modifier

Éditer efficacement

modifier
Passer au « mode insertion »
i passe au « mode insertion » avant le curseur
a passe au « mode insertion » après le curseur
I passe au « mode insertion » en début de ligne
A passe au « mode insertion » en fin de ligne
o passe au « mode insertion » sur une nouvelle ligne au-dessous du curseur
O passe au « mode insertion » sur une nouvelle ligne au-dessus du curseur
Remplacement
r remplace le caractère sous le curseur
R passe au « mode insertion » en remplaçant les caractères sous le curseur
Effacer (couper)
x efface le caractère sous le curseur
dd efface la ligne du curseur
d$ efface du curseur jusqu'à la fin de la ligne
dw efface du curseur jusqu'à la fin du mot
dtc efface du curseur jusqu'au caractère c suivant non-inclus
dfc efface du curseur jusqu'au caractère c suivant inclus
Copier
La syntaxe présentée pour couper est généralement valide pour copier, en remplaçant d par y, d'une manière générale le curseur indique la position de départ et un motif de déplacement indiquent la fin du texte à copier/couper.
Les deux fonctions ont cependant certaines fonctionnalités spécifiques :
"nP colle le texte du nième effacement (jusqu'à 9)
"cyy copie la ligne du curseur dans le tampon désigné par le caractère c
"cP colle le contenu du tampon c


Sous vi, une commande peut être lancée plusieurs fois simultanément, n commande lance n fois la commande, par exemple :

  • 2yy copie la ligne du curseur et la ligne suivante ;
  • 10x efface 10 caractères.

Se déplacer efficacement

modifier
Rechercher
/motif recherche motif vers le bas
?motif recherche motif vers le haut
n répète la recherche
N répète la recherche dans l'autre sens
/ répète la recherche vers le bas
? répète la recherche vers le haut
Déplacer le curseur dans le fichier
e déplace le curseur à la fin du mot (du mot suivant si déjà atteint)
( déplace le curseur d'une phrase vers l'arrière
) déplace le curseur d'une phrase vers l'avant
{ déplace le curseur d'un paragraphe vers l'arrière
} déplace le curseur d'un paragraphe vers l'avant
[[ déplace le curseur d'une section vers l'arrière
]] déplace le curseur d'une section vers l'arrière
Remarque : ces motifs de déplacement peuvent être utilisés dans la syntaxe des coupers/copiers
Déplacer le curseur dans la fenêtre de vi
H déplace le curseur sur la première ligne de l'écran
M déplace le curseur au milieu de l'écran
L déplace le curseur sur la dernière ligne de l'écran
( déplace le curseur d'une phrase vers l'arrière
z <ENTRÉE> déplace la ligne du curseur en haut de l'écran
z. déplace la ligne du curseur au milieu de l'écran
z- déplace la ligne du curseur en bas de l'écran
Marquage
mc marque la position du curseur du caractère c
'c déplace le curseur jusqu'à la marque c
'' déplace le curseur jusqu'à la marque précédente
  GFDL Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture.