Accueil - Informatique - Programmation - Outils

VI Un editeur de texte

Publié le mercredi 7 avril 2004.


VI est un éditeur robuste et très puissant présent en standard sous UNIX. Un clone plus récent, VIM, existe sur la majorité des plateformes.

Mis à jour le 30/11/2004

Un éditeur de texte : VI

Pourquoi utiliser VI


VI est un éditeur présent en standard sur les systèmes d’exploitations UNIX. On peut également installer un des ses clones sous WinXP. Celui que j’utilise est VIM. VIM est livré en standard en mode console sous Linux et Solaris et possède des caractéristiques intéressantes comme la coloration syntaxique, un mode GUI (gvim), etc...

VI existe depuis plus de 30 ans, et comme la majorité des outils sous Unix, apprendre VI reste un investissement rentable sur le long terme.

Utilisation de VI


Vous trouverez ci dessous pour mémoires quelques commandes les plus usuelles :

0/$     début/fin de ligne
^       premier caractère significatif de la ligne courante
j/k     ligne suivante/précédente
+/-     ligne suivante/précédente, premier caractère significatif
G       fin de fichier
NG      va à la ligne n
expr    recherche l'occurrence expr dans le texte<br>
?expr   recherche l'occurrence expr dans le texte vers le début, en arrière<br>
n/N     occurrence suivante/précédente
w/b     avance/recule d'un mot
W/B     idem en ignorant la ponctuation
fC/FC   va au prochain caractère C vers la gauche/droite
tC/TC   va avant/après le caractère C
ma      marque la ligne (repère a)
&#8216;a      va à la ligne marquée par le repère a
{/}     avance/recule d'un paragraphe (séparateur par défaut : ligne vide)
%       se place sur la prochaine parenthèse/crochet/accolade ), ] ou }
dG      efface du curseur jusqu'à la fin du fichier
d%      si on est sur une accolade ouvrante, efface jusqu'à l'accolade fermante
d^      supprime les espaces du début de la ligne au premier caractère
yy      copie la ligne dans le tampon (buffer)
y$      copie dans le tampon jusqu'à la fin de la ligne

Les commandes ex :


Substitution :

:1,$s/toto/tata/gc   remplace dans tout le document toto par tata en demandant confirmation<br>
:%s/\//\./g         remplace dans tout le document / par .
:ab bo bonjour      substitut la chaine bo par la chaine bonjour

Générales:

<code>
set list            Visualisation des marques invisibles (\t, \n, ...)
set nu              Visualisation des numéros de lignes<br>
set all             Visualisation des variables de VI<br>

On basculera dans le mode précédent un préfixant la commande avec « no »:

<code>
set nonu)

Les macros :


Before you can start creating your own maps, you need to know the keys not used in command mode that are available for user-defined commands :

Letters :

g K q V v

Control keys :

^A ^K ^O ^T ^W ^X

Symbols :

_ * \ = (Note : The = is used by vi if Lisp mode is set.)

Aide sous VIM :


:h                ouvre une fenêtre d'aide
:q                ferme la fenêtre
^T                revient en arrière dans l'aide

Commandes diverses et utiles :


Remplacer dans plusieurs fichiers une occurrence par une autre :

vim -c '%s/toto/tata/g' -c 'wq!' *.ext

Configuration de VIM :


La configuration se fait dans les fichiers .vimrc ou _vimrc du répertoire utilisateur.

Faire de même si vous désirez utiliser la version gvim sous X11 avec le fichier gvimrc_exemple.vim (voir la description en entête de ces fichiers).

Habituellement, j’utilise les commandes suivantes en plus du mode par défaut :

set nobackup
set lines=45 columns=82
set guifont=Courier_New:h9:cANSI
autocmd BufNewFile,BufRead *.vb set ft=vbnet
" remplace la tabulation par des espaces sauf dans les Makefiles
set expandtab
au BufNewFile,BufReadPost Makefile set noexpandtab

Bug du mode vimdiff sous Windows :
Le mode vimdiff est utilisé pour visualiser les différences entre 2 fichiers. Sous Windows et dans la dernière version de gvim 7.4, ce mode ne fonctionne pas et affiche l’erreur suivante :
Cannot read or write temp files
ou
impossible de lire ou écrire des fichiers temporaires

Editer le fichier de configuration _vimrc, et dans la fonction diffexpr=MyDiff() remplacer la ligne :

if &sh =~ '\<cmd'

par :

if &sh =~ "\<cmd"

Lorsque l’on utilise VI depuis une console (cygwin ou TeraTerm sur PC) et que les touches de déplacement ne fonctionnent pas correctement, mettre la variable TERM à vt100.

Lorsque la taille de la console est différente de 25 lignes par 80 colonnes, taper la commande :

eval `resize`.

Pour utiliser sous cygwin indifféremment la version console ou la version Windows de VIM, mettre la fonction suivante dans votre .bashrc :

gvim()
    {
       export VIM=c:\\vim    
       /cygdrive/c/vim/Program\ files/vim70/gvim $1 &
       export VIM=/usr/share/vim    
    }

Pour utiliser la coloration sous cygwin, définir la variable VIM par :

$ export VIM=/usr/share/local/vim

et créer le fichier .vimrc dans votre répertoire utilisateur

Liens utiles


VIM