Vim l'éditeur superlatif
Tout ceux utilisant ou ayant utilisé Unix ont touché une fois ou l'autre
à Vi. Malheureusement, ce premier contact à généralement été pénible.
Les différents modes d'édition perturbent (vous savez, quand vous tapez et que
rien ne s'affiche...). Lorsque l'on a trouvé comment insérer du texte, l'on
arrive pas à effacer ou quitter et sauver son document. Face à cette
sobriété, on croit être revenu 20 ans en arrière et on ne prolonge pas
l'expérience.
PAS BIEN !!!
Dégoûté par ce premier contact, on se rabat vers des éditeurs beaucoup moins
puissants, comme pico, dont le comportement (et les fonctionnalités)
se rapproche du bloc-note.
Une autre confusion classique: Vi et Vim. Vi est un des éditeurs 'historique'
d'Unix. Le développement a été arrêté depuis de longues années. Puissant pour
l'époque mais peu convivial. Vim est un éditeur en constant
développement, moderne, capable d'être compatible avec Vi (mais personne
ne l'utilise plus ainsi). C'est à Vi, ou à Vim non configuré (compatible
Vi), que vous avez générallement eu à faire.
Pourtant Vim est le meilleur éditeur au monde, son seul concurrent étant
Emacs, une bataille sans fin les oppose. Le choix entre l'un ou l'autre est
purement question de gôut. Les personnes de bon goût choisissent
évidemment Vim.

Quelques points forts de Vim:
- Multi-platteformes.
- GPL, gratuit.
- Gestion de centaines de languages avec leurs spécificités:
- Coloration.
- Indentation.
- Style.
- Folding (masquage de parties d'un texte ou programme).
- Orienté clavier et rapidité d'édition.
- Recherches, remplacements, expressions régulières.
- Séléctions rectangulaires.
- Extensible (script intégré, Perl, Python, Ruby).
- Complétion automatique (mot clefs, fichiers, ...).
- Undo/Redo multiples.
- Macros.
- Edition transparente de fichiers compressés.
- Saisie de digraphs (´ + e => é).
- Totalement personnalisable.
- ...
Certains critiquent aussi la ligne de commande en argumantant que c'est
l'interface des années 60. A ce moment on peut dire que les interfaces
graphiques sont les interfaces des années 80. Oui, mais les interfaces
graphiques ont évoluées ! Et vous pensez que la ligne de commande n'a pas
fait de même ? Bien sûr, qu'elle à évoluée, mais contrairement à une
interface graphique, les différences ne sautent pas aux yeux, la sobriété
est restée.
Cet éditeur à plusieurs modes: le mode commande, le mode insertion, le mode
visuel, le mode remplacement. Chacun de ses modes comprend des centaines de
raccourcis. Au fil du temps nous apprenons de plus en plus de fonctions
utiles, mais la majeur partie reste innutilisée. Il vaut mieux avoir trop
de choix que pas assez.
Vim est considéré comme un logiciel à courbe d'apprentissage lente, la
foison de commandes accentue cet Aspect. Le fait que les commandes aient
une signification différente dans les différents modes également. Mais
chaque utilisateur va apprendre à utiliser les commandes dont il a
besoin, contrairement à d'autres éditeurs, cette fois le programme est
moins limité que l'utilisateur. Une fois maîtrisé, c'est un éditeur
ultra rapide, ou le nombre de touches tapées est réduit au minimum, ou
les déplacements se font plus vite qu'avec une souris.
Généralement, Vim ne trouve tout son potentiel que lorsque l'utilisateur
l'a configuré de manière optimale pour lui. Via le fichier de config
principal (.vimrc) et via l'ajout de scripts suplémentaires. Vim se sert
également de programmes externes: make pour la compilation, aspell pour la
correction orthographique, ... Les fonctions que l'on utilise le plus
souvent peuvent être très facilement reliées à des touches simples dans le fichier
.vimrc.
Je vous propose ici, mon fichier .vimrc, le répertoire .vim contenant mes
scripts favoris et un fichier update_vim.sh que vous pouvez charger, rendre
exécutable et exécuter sur votre compte, afin d'avoir ma config. Ce fichier
se chargera de downloader et d'installer ma config tout en backupant la
votre.
Un petit exemple d'internationalisation
Quelques commandes de ma config
Sauf si indication, tout est en mode commande.
<Tab> Complète le mot (<C-t> pour insérer un tabulateur normal) [mode insertion].
<F1> Aide de mes fonctions.
<F2> Appelle make.
<F3> Appelle Sokoban (oui le jeu :-)
<F4> Fais apparâitre des menus en mode texte. Idéal pour un
apprentissage en douceur.
<F5> Fais apparâitre cycliquement, numéro de lignes, caractères
invisibles et numéros de lignes avec caractères invisibles.
<F6> Replie toute les fonctions en folder pour les languages de
type C.
<F7> Fais apparaître une liste des fonctions d'un fichier (tous les
languages supportés par ctags sont gerés), avec possibilité de sauter au
début de la fonction ou de voir le prototype complet.
<F8> Winmanager Un explorateur de fichiers et de buffer.
<C-w> <C-f> Fenêtre de fichiers.
<C-w> <C-b> Fenêtre de buffers.
<F9> Change le thême (Parmis les thêmes personnels).
<F10> Change le thême (Parmis les thêmes fournis avec Vim).
<C-h> Aide des combinaisons avec Control.
<C-f> Correction via Aspell en français adaptée à TeX.
<C-e> Correction via Aspell en anglais adaptée à TeX.
<C-c> Commente la ligne.
<C-d> Insère la date dans le texte.
<C-x> Transforme le mot en balise [mode insertion].
<C-b> Supprime les espaces en bout de lignes.
;s Remplace 2 lignes vides par 1 seule dans tout le document.
;c Commente la ligne.
Points notables de ma config
- Vimbuddy Un smiley indicatif dans la barre de status.
- Barre de statut permanent et améliorée.
- Alternate Passer des fichiers .h au .c (ou autres) en tapant :A.
- Calendrier Tapez :Calendar
- Edition directe des fichier gz ou bz2.
- tabulateurs gérés en taille 4
Et bien d'autres détails, le tout largement commenté dans le fichier .vimrc. Sachez encore que vim complète
vos commandes automatiquement en tapant sur . Pour avoir de l'aide
tapez :help suivit de tab si vous ne savez pas
exactement. Voila, j'espère que ceci vous aidera à prendre un nouveau
départ avec ce fantastique éditeur, mais il est vrai que l'on ne peut
comprendre sa puissance qu'après un certain temps d'utilisation. Tapez
vimtutor pour un tutorial de base, ensuite lisez l'aide intégrée (parfois
un peu barbare mais très complète).
Mon répertoire vim (.vimrc, scripts et auto-update)
Quelques raccourcis
Pour passer de n'importe quels modes au mode commande, appuyez sur <Esc>. Plusieurs fois si nécessaire.
Mode commande (Par défaut)
ZQ ou :q! Quitte sans sauver.
ZZ ou :wq Quitte en sauvant.
p Coller (Paste).
* Cherche le mot en dessous du curseur.
i Passage en mode insertion à l'endroit du curseur.
A Passage en mode insertion à la fin de la ligne.
o Crée un ligne sous la ligne actuelle et passe en mode insertion.
O Crée un ligne sur la ligne actuelle et passe en mode insertion.
Mode insertion
C-w Efface le mot précédent.
C-y Copie la lettre de la ligne en dessus sur la ligne courrante.
C-e Copie la lettre de la ligne en dessous sur la ligne courrante.
C-p, C-n Essaie de compléter le mot, continuer jusqu'à satisfaction.
C-x Appelle le mode complétion.
- En mode complétion, la deuxième commande indique le type de complétion,
et ensuite C-p et C-n servent à naviguer parmis les propositions.
- C-l Essaie de compléter la ligne entière.
- C-f Essaie de compléter un nom de fichier.
C-t Indentation de la ligne.
C-d Déindentation de la ligne.
C-a Réinserte le dernier texte inséré.
C-o Quitte pour une commande le mode insertion et y revient après.
Mode visuel
Passage en mode visuel. Trois types de blocs:
v Stream block, caractères contigus.
V Line block, lignes contigues.
C-v Box block, rectangle.
o Permet de redéplacer le début du bloc.
Opérations sur les blocs:
d Effacer(Delete).
y Copier (Yank).
x Couper.
U Mise en majuscules.
u Mise en minuscules.
~ Inverse la case.
< Déindenter.
> Indenter.
r Remplir un bloc avec un caractère (Taper ensuite le caractère.).
Macros
Enregistrement de macro: taper q#, # étant le numéro de la macro.
q Quitter l'enregistrement.
@# Jouer la macro.
Les macros restent entre les sessions.
Exemples pratiques
Insertion de l'output d'une commande externe
Tapez:
:r!la_commande
Par exemple pour insérer la liste des fichiers du répertoire courrant:
:r!ls
Tri d'un texte avec sort
Utilisation d'un programme externe Unix sur un texte dans Vim. Mettez vous en mode
visuel (V), selectionnez la zone à traîter en déplaçant le curseur.
Tapez:
:!sort
Ceci aura fait appel au programme sort sur les lignes selectionnées et l'output du
programme aura remplacé, lesdites lignes.
Rechercher-Remplacer
Un petit exemple pratique, nous désirons remplacer le mot
'souteneur' par 'macro', tapez:
:%s/souteneur/macro/gc
: Début classique d'une commande.
% Agit sur tout le document (portée de la commande).
s Substitution (la commande en elle-même).
/souteneur/macro/ Expression régulière Unix, ici trivial.
gc Option complémentaires:
- g: plusieurs remplacements sur la même ligne.
- c: demande la confirmation à l'utilisateur pour chaques remplacements.
Cette commande est une bonne illustration de la structure {portée}{commande}{paramètres},
en mode visuel par exemple, la portée est automatiquement associée
à la partie sélectionée. La portée peut-être une ligne, une partie de ligne, un
ensemble de lignes, un décallage.
Une EXCELLENTE page sur ce sujet !
Links
Vim.org - Site officiel
Vim Ressources - Scripts, thêmes, tips, l'essentiel
de ma config est basée de scripts provenant de ce site
Vim Commands Summary
Vim pour écrire du LISP
Vim WebRing
Macro
Très bonne page en français expliquant en détails certains concepts (mark, macros, mapping, ...).
Célèbre tutorial Vi
The Cult Of Vi
Vi Lovers
Un excellent site
Vi vs emacs
Pourquoi Tim O'Reilly utilse Vi
Emacs vs Vi
Study of Vi and Emacs
|
|