Table des matières
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 |
Naviguer
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
- Vim Quick Reference Card (avec traduction en français)