Outils pour utilisateurs

Outils du site


mementos:vi

Memento Vi

Vi (prononcer “Vi-aïe”) est un éditeur de texte visuel (ne pas confondre avec graphique). Il a été écrit par William Joy en 1976 pour une des premières versions de la distribution BSD d'Unix.

Vim (pour Vi IMproved et qui se traduit par : Vi amélioré) est directement inspiré par Vi, mais contrairement à ce dernier, Vim est un logiciel libre. La première version a été écrite et diffusée par Bram Moolenaar en 1991.

Sur les machines de travaux pratiques de l'UFR, c'est Vim qui est installé, aussi dans la suite, on utilisera indifféremment l'appellation Vi ou Vim.

Il présente les avantages suivants:

  • il est installé par défaut sur la majorité des systèmes Unix actuels,
  • il ne nécessite pas d'interface graphique (un terminal suffit),
  • il possède une grande richesse fonctionnelle; il permet la réalisation de traitements complexes impossibles à réaliser avec d'autres éditeurs,
  • Étant donné qu'on transmet les commandes en gardant les mains sur le clavier, il n'y a rien de plus rapide lorsqu'on les connait.

Les modes

L'éditeur Vi dispose de plusieurs modes de fonctionnement qui permettent différents types d'interactions avec l'utilisateur. Les principaux modes sont les suivants:

  • Le mode normal (aussi appelé mode commande)
  • Le mode d'insertion
  • Le mode ligne de commande (lorsque la commande a été exécutée, on retourne dans le mode normal)
  • Le mode visuel (permet de définir et de visualiser une zone de travail)
  • Le mode sélection (permet de sélectionner une zone (mode visuel), et le texte sélectionné est remplacé par le texte tapé (mode insertion))
  • Le mode d'exécution (ressemble au mode ligne de commande excepté que lorsque la commande a été exécutée, on reste dans ce mode)

Par défaut, Vi démarre en mode normal. La commande :i permet de passer en mode insertion, tandis que la touche <Echap> permet de revenir au mode édition.

Le mode ligne de commande permet l'exécution de macro-commandes; il s'agit d'un véritable langage de programmation permettant d'automatiser des tâches d'édition de texte.

Lancer Vi

On lance Vi simplement en tapant :

$ vi

ou

$ vim

Pour éditer un fichier précis :

$ vi monbofichier.html

Si le fichier n'existe pas, il sera créé

Aide

Commande Description
:help Aide de Vi
:help commande Aide de Vi sur commande

Changer de mode

Commande Description
:i Passe en mode insertion
<Echap> Quitter le mode insertion

Fermer/Quitter

L'ajour d'un ! permet de forcer l'action

Commande Description Commentaires
<Echap>
<Ctrl>+c
<Ctrl>+[
Quitte le mode insertion
:q Fermer la fenêtre courante La fenêtre n'est pas fermée si des
modifications ont été réalisées
:q! Forcer la fermeture de la fenêtre La fenêtre est fermée même si des
modifications ont été réalisées
:qa Fermer toutes les fenêtres
:qa! Forcer la fermeture de toutes les fenêtres
:wq Quitter et enregistrer la fenêtre courante
:x
Commande Description Commentaires
gg Accéder directement au début du fichier
G Accéder directement à la fin du fichier
:ligne Accéder directement à une ligne
colonne| Accéder directement à une colonne
<Ctrl>+e Défiler vers le haut En mode insertion
<Ctrl>+y Défiler vers le bas
zt Positionner la ligne courante en haut de l'écran
w
<Ctrl>+←
Accéder au mot suivant
b
<Ctrl>+→
Accéder au mot précédent
<Ctrl>+g Afficher la position dans le fichier

Signets

Commande Description
m + lettre Marquer la position par la lettre
' + lettre Accéder à position marquée par la lettre
'' Accéder à la position précédente
'0 Ouvrir le fichier précédemment ouvert

Sélectionner

Commande Description Commentaires
v Sélectionner visuellement On peut utiliser les flèches, <Dbt>, <Fin>, …
<Ctrl>+v Sélectionner la ligne courante
<Del> Couper la sélection
“_x Effacer la sélection
y Copier la sélection
p Coller au niveau du curseur
Ay Concaténer la sélection au registre a
ap Coller le contenu du registre a
= Ré-indenter la sélection
> Indenter la sélection
< Dés-indenter la sélection

Insérer

Commande Description
:i Avant le curseur
:a Après le curseur
:I Début de la ligne courante
:A Fin de la ligne courante
:O Nouvelle ligne avant la ligne courante
:o Nouvelle ligne après la ligne courante

Copier/Coller

Commande Description
dd Couper la ligne courante
yy Copier la ligne courante
D Couper jusqu'à la fin de la ligne
y$ Copier jusqu'à la fin de la ligne

Chercher

Commande Description
/regexp ou :/regexp Chercher une expression régulière dans la suite du texte
/ Poursuivre la recherche dans la suite du texte
?regexp ou :?regexp Chercher une expression régulière dans le début du texte
? Poursuivre la recherche dans le début du texte
n Poursuivre la recherche (/ ou ?) dans la même direction
N Poursuivre la recherche (/ ou ?) dans la direction opposée
* Chercher le mot sous le curseur dans la suite du document

Les expressions régulières

Symbole Signification
. Tout caractère excepté celui indiquant une nouvelle ligne
* Zéro, une ou plusieurs occurrences des caractères précédents
^ Début de ligne
$ Fin de ligne
\< Début d'un mot
\> Fin d'un mot
[liste] Un des caractères contenu dans liste
[^liste] Tout caractère exceptés ceux contenus dans liste
\ Protection du caractère suivant: il est interprété littéralement

Exemples

Commande Signification
/M[a-z]*n Rechercher tous les mots qui commencent par M et
se terminent par n dans la suite du texte
/^Je Rechercher toutes les lignes qui commencent par Je
dans la suite du texte

Remplacer/Substituer

Commande Description Commentaires
:%s/1/2/gc Rechercher l'expression régulière 1 et la remplacer
par la chaîne 2 dans tout le fichier
L'ajout du c final vise à demander une confirmation
:s/1/2/g Rechercher l'expression régulière 1 et la remplacer
par la chaîne 2 dans la sélection

Fenêtres

Commande Description
:sp Ouvre une fenêtre en bas
:vs Ouvre une fenêtre à gauche
<Ctrl>+w puis flèche
(gauche,droite,haut,bas)
Se déplacer dans les fenêtres ouvertes
<Ctrl>+w <Ctrl>+w Passe à la fenêtre ouverte suivante
<Ctrl>+w puis = Redimensionne automatiquement la fenêtre
:ba Ouvre une nouvelle pour chaque buffer
vert :ba Ouvre une nouvelle pour chaque buffer et
sépare les fenêtres verticalement

Historique

Commande Description
u Annuler/Défaire
<Ctrl>+r Refaire
. Répéter

Commandes

Commande Description
:%!filtre Passer l'ensemble du fichier au travers d'un filtre
:!filtre Passer la sélection au travers d'un filtre
:,!commande Remplacer la ligne courante par le résultat de la commande
:echo &mot Afficher la valeur de mot

Liens utiles

mementos/vi.txt · Dernière modification : 2010/09/06 14:56 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki