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:
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:
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.
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éé
Commande | Description |
---|---|
:help | Aide de Vi |
:help commande | Aide de Vi sur commande |
Commande | Description |
---|---|
:i | Passe en mode insertion |
<Echap> | Quitter le mode insertion |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
Commande | Description |
---|---|
u | Annuler/Défaire |
<Ctrl>+r | Refaire |
. | Répéter |
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 |