Vim, c'est quoi ? Une description en 6 Ko
Vim (“Vi IMproved”, c'est-a-dire “Vi ameliore”) est un clone de Vi, a savoir un programme semblable a l'éditeur de texte “Vi”.
Vim fonctionne en mode texte sur tous les types de terminaux, mais il dispose aussi d'une interface graphique, avec menus déroulant et souris.
L'auteur principal est Bram Moolenaar bram@vim.org. Vim est distribué sous licence opensource compatible GPL. C'est un “charity-ware” : vous êtes encourages a faire une donation aux orphelins d'Ouganda (voyez : “:help uganda”).
Il y a plusieurs modes d'édition. Par défaut, quand vim s'ouvre, on se retrouve en mode interactif. Avant de changer de mode, il faut revenir au mode interactif:
On bascule d'un mode à l'autre à l'aide de raccourcis clavier en mode interactif:
La recherche est sensible à la casse, pour ignorer la casse, utilisez la commande: set ignorecase
La recherche supporte les expressions régulières.
Vim utilise la même syntaxe que sed pour les expressions relationnelles. Le caractère d'échappement est l'antislash : \
Pour remplacer toutes les occurrence d'une expression:
:%s/<expression à chercher>/<expression qui va la remplacer>/g
Par exemple:
:%s/\/usr\/bin/\/usr\/share\/bin/g
Ceci remplace /usr/bin par /usr/share/bin
À chaque fois qu'on ouvre un document, le contenu de celui-ci est copié dans un buffer.
En mode commande:
En mode commande:
En mode interactif:
En mode commande:
En mode interactif, toute commande est précédée par <ctrl> + <w>:
Replier le code est quelque chose de très utile. On peut effectuer les replis à la main mais cela s'avère laborieux, surtout avec des fichiers de plusieurs milliers de lignes!
Heureusement, il existe des méthodes intégrées. Par exemple, si votre code est correctement indenté ou avec un langage comme python, basé sur l'indentation:
:set foldmethod=indent
Si vous préférez vous baser sur la syntaxe (if, while, for, etc):
:set foldmethod=syntax
Les commandes pour les replis:
La configuration de vim se fait au moyen du fichier ~.vimrc. Vous pouvez inclure dans ce fichier toute commande que vous pouvez faire en mode commande. Par exemple:
:set number
Ceci affiche les numéros de ligne. Si vous voulez que les numéros de ligne soient toujours affichés, vous n'avez qu'à ecrire dans votre .vimrc:
set number
On peut aussi rajouter des scripts dans son vimrc, que ce soient des script bash, python ou perl (à condition d'avoir installer les add-on), les possibilités sont donc infinies.
On peut aussi définir ses propres raccourcis clavier qui peuvent aussi lancer leur propres scripts mais pour l'exemple, on va prendre une configuration simple mais efficace:
" couleur par rapport à la syntaxe syntax on " mon terminal a un fond noir set background=dark " réglage pour gérer la souris en interne, pour la gérer en externe, mettre r set mouse=a " detecter le type de fichier et charger les plugins filetype indent plugin on " forcer le retour à la ligne lorsque celle-ci dépasse de l'écran set wrap "indentation intelligente set smartindent " afficher les numéros de ligne set number " customisation de la barre de status set statusline=%<%f%m\ %r\ %h\ %w%=%l,%c\ %p%% " ?????? set whichwrap=<,>,[,] " rester dans la même colone quand on change de ligne set nostartofline "afficher les replis set foldcolumn=4 " voire la ligne et la colone en bas à droite set ruler " optimiser la vitesse de réaction du terminal set ttyfast " pour un fichier texte, activer le spellchecker autocmd BufEnter *.txt set spell set spelllang=fr " effacer les badwhitespace à l'enregistrement autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s\+$//ge | endif " methode de repli automatique set foldmethod=indent
Il y a de nombreux add-ons, scripts et macros pour vim. Notamment pour chaque langage de programmation, l'intégration d'un terminal dans un split (vim-conque), l'outliner (vim-outliner), etc.
Vim-addons est une commande qui permet de gérer les add-ons et de les ajouter à votre session utilisateur. Si l'add-on fait partie d'un package de votre distribution, il n'est pas ajouté à votre session.
On ne peut pas décemment écrire un article sur vi sans évoquer le plus vieux troll de l'histoire de l'internet.
Emacs est l'autre éditeur en console plébiscité par la communauté. Les différences entre les deux logiciels ont opposé et opposent encore les farouches guerriers de emacs aux terribles cohortes de vi.
On reproche principalement à emacs ses raccourcis claviers alambiqués, sa lourdeur, le fait qu'il ne fait pas le café, de ne pas être vi, etc. Et on reproche à vi… des choses sans importance. Vi est beaucoup mieux ;)