Vim

De Ensiwiki
Aller à : navigation, rechercher
Vimlogo.png

Dernière version 8.0

Environnement Windows, Linux, MacOSX

Type Editeur de code
Licence Charityware

Site Web vim

Windows.png  Windows  Tux.png  Linux  Apple.png  MacOS X 

Description

Vim est un éditeur de code. Son intérêt principal provient de son mode "commande", qui permet d'effectuer des opérations complexes en un minimum de temps. Il s'agit également d'un des rares éditeurs de code - avec Emacs - capable de proposer une édition intelligente (coloration, indentation, complétion, ...) de la quasi-totalité des langages de programmation utilisés à l'heure actuelle.


Pourquoi VIM ?

Vim nécessite un temps d'apprentissage important et un "minimum" de configuration avant d'être utilisable. Il est légitime de se demander pourquoi réapprendre à utiliser un éditeur de code (taper ":w" pour sauvegarder alors qu'on est habitué au CTRL+S peut sembler une perte de temps, à priori).

La réponse est simple : gagner en efficacité. Il est certains que dans vos premières semaines d'utilisation de Vim, vous aurez l'impression de mouliner et de perdre du temps à switcher en permanence entre mode commande et édition, mais une fois la dizaine de commande de base connues, à vous le pissage de code productif ! (Des exemple de la puissance de VIM sont disponibles dans la suite...)


De plus : il est tout à fait possible d'utiliser les commandes "normales" (CTRL+S, CTRL+C/CTRL+V, ...) dans VIM. Ca n'est bien sûr pas recommandé, mais c'est bien pratique dans les premières semaines (mois ?) d'utilisation. Un fichier de configuration .vimrc "n00b-proof" est disponible dans la suite : utilisez le dans vos premières semaines en tentant de basculer de plus en plus vers les commandes de base de VIM...


Vim est également l'un des rares éditeurs à fonctionner aussi bien dans un shell (comme nano) que dans une interface graphique avancée (via gvim), ce qui le rend utilisable dans toutes les situations.

Autres avantages de VIM, en vrac : léger, souris fonctionnelle lors d'une édition en ligne de commande (contrairement à nano ou la plupart des éditeurs fonctionnant dans un shell), utilisable au sein de la plupart des grands IDE (eclipse, VS, ...), disponible partout (même quand on pirate un TX en root, c'est dire !), édition de fichier à distance en ssh, ...

VIM sucks ! Eclipse powwwa !

Je vois d'ici les fans d'Eclipse bondir et me reprocher de faire la pub d'un éditeur antique, sans fonctions de refactoring avancé, sans compilation inline, etc. Effectivement, en tant qu'IDE pour des langages modernes (Java, C#, ...), Vim c'est moyen. Mais, car il y a un mais : la puissance de VIM ne vient pas du logiciel en lui même, mais de ses "key bindings" et de son mode commande ! Et il est évidemment possible d'utiliser ce mode commande dans Eclipse et dans Visual Studio, avec les plugins adaptés ! Et là c'est le must : non seulement vous êtes dans un environnement de travail moderne, mais en plus vous utilisez le rapid-tapage productif de Vim. Apprendre les quelques commandes de VIM n'est donc pas perdu !

Plugins pour Eclipse :

  • viPlugin : ajoute quelques fonctionnalités du mode commande de Vim dans Eclipse. Très incomplet (pas de folding (za), ...) et cher (15€). A éviter.
  • Eclim : Eclim effectue le travail inverse de viPlugin : il apporte les fonctionnalités d'Eclipse à Vim ! Autrement dit, vous avez toutes les fonctionnalités de Vim + l'intellisense Java + refactoring avancé + ... Le site contient la liste détaillée des features et quelques screenshots.

Plugins pour Visual Studio :

  • ViEmu : ajoute la plupart des raccourcis Vim à Visual Studio. Le plugin a été pensé pour être le plus fidèle possible à Vim. C'est globalement le cas, malgré quelques key-bindings manquants (CTRL+A sélectionne tout le code au lieu d'incrémenter le nombre suivant dans le document, CTRL+P imprime au lieu de faire de la complétion, le fonctionnement de l'undo est légèrement différent de celui de Vim... Bref, quelques détails). Le plugin est payant (99$).

Plugins pour Netbeans :

  • jVi : très complet, très bien intégré et très configurable. Rien à redire.

Documentation

  • VIM Adventures un tuto pour apprendre vim sous la forme d'un jeu d'aventure. Déplacez le personnage avec les mêmes commandes que pour bouger le curseur dans Vim !

Un Vim facile ?

Evim

Le mode commande de Vim peut être déroutant au début. Si vous voulez un éditeur similaire à gedit / nedit mais avec des fonctions avancées, utilisez la commande "evim". Evim, ou Easy Vim, c'est simplement Vim sans son mode commande. Vous bénéficiez donc de l'indentation automatique, de la coloration, de la complétion (CTRL+P), dans un éditeur qui est aussi facile d'utilisation qu'un bloc note (CTRL+S pour sauvegarder, etc.). Vous pouvez également utiliser le menu de l'éditeur pour accéder aux fonctions avancées de vim (enregistrement de macro, etc.) Une fois habitué à evim, tentez de passer à vim avec le vimrc pour débutant, vous gagnerez en productivité.

Cream

Dans la même catégorie, on trouve Cream, un vim pré-configuration pour fonctionner comme la plupart des éditeurs de textes modernes, ce qui permet aux débutant d'entrer plus doucement et sûrement dans le bain de la vim-awesomeness.

.vimrc pour commencer

Fichier de configuration de vim (.vimrc) permettant d'utiliser tous les raccourcis classiques du monde Windows (CTRL+S, CTRL+C, ...) et modifiant le comportement de certaines touches (BackSpace, ...).

Searchtool-80%.png Aide détaillée : Vimrc for beginners.


Ceci dit, avec un .vimrc de ce type, vous vous retrouverez tout de même devant un éditeur tout moche, sans coloration syntaxique, sans indentation automatique, ... bref : sans rien. Qu'à cela ne tienne : voici un .vimrc minimal pour rendre Vim utilisable :

Searchtool-80%.png Aide détaillée : Vimrc minimal.


Les plugins essentiels

Avec la section précédente, vous commencez à avoir un éditeur pas trop mal : il colore bien, il indente bien, ... Ceci dit, il reste encore un peu obscur. Petite sélection de plugins essentiels, valable pour tous les languages, pour rendre Vim définitivement meilleur qu'un nedit ou un Notepad++ :

  • minibufexpl : vim possède une navigation par onglet, mais il ne l'utilise pas par défaut. Par défaut tous les fichiers ouverts sont chargés dans des "buffers" (l'équivalent d'un onglet caché, avec partage des registres : par exemple si vous enregistrez une macro, elle sera utilisable par tous les fichiers ouverts dans les buffers). Le problème c'est que ces buffers n'apparaissent pas à l'écran, il est donc difficile de se retrouver dans les fichiers ouverts. Ce plugin ajoute une barre d'onglet supplémentaire permettant de parcourir tous les buffers : VIM01.PNG

Plugins par langage

Ces plugins sont disponibles sur le site de vim, dans la section scripts.

Searchtool-80%.png Aide détaillée : C++ avec Vim.
Searchtool-80%.png Aide détaillée : HTML avec Vim.


Les color schemes (tout aussi essentiels)

La coloration par défault dans vim, même si elle peut en contenter plus d'un, peut se révéler ennuyeuse après de longues nuitées passées à écarquiller les yeux devant un écran, voire insuffisante si vous décidez de coder dans un langage non ou mal supporté. C'est pourquoi vous pouvez avoir besoin de trouver de nouvelles colorations. Là, vous avez l'embarras du choix mais quelqu'un s'est amusé à en regrouper pour vous (cf. plus bas, une petite sélection)

Les colorscheme de vim sont des fichiers de la forme *.vim, normalement situés dans le dossier ~/.vim/colors. Pour charger un nouveau colorscheme dans vim, il suffit de

  • le mettre dans le dossier ~/.vim/colors
  • ajouter cette ligne à son ~/.vimrc: colorscheme <nom du colorscheme>

Une petite selection de colorscheme qui valent la peine

Devenir productif

Maintenant vous avez un environnement de travail sympathique. A tout casser, ça vous a pris 15 minutes et vous avez un environnement qui correspond à vos premiers désirs. Maintenant il est temps de devenir efficace, ou du moins de comprendre comment taper un mot, autrement dit : apprendre les key-bindings de Vim. C'est souvent la partie qui donne sa mauvaise réputation à Vim et pourtant il n'y a en réalité que 4 ou 5 touches essentielles à apprendre. C'est en combinant ces touches que vous effectuerez des actions complexes.

Searchtool-80%.png Aide détaillée : Vim Key-bindings.


Vim dans les projets de l'Ensimag

Si l'utilisation de nedit, gedit ou tout autre "text-editor" peut vous suffire pour les TP simples, leur utilisation est plus difficile à justifier pour les "gros" projets (projet C en 1A, projet spé en 2A, ...). Vim vous aide à structurer votre code et à retrouver les fonctions que vous aviez perdues / que les profs n'ont pas documentées, comme un vrai IDE.

Mais... Flemme de modifier vos .vimrc à la main ? Flemme de configurer VIM pour qu'il ponde la moitié du code ADA de votre compilateur à votre place ? Qu'à cela ne tienne, nous l'avons fait pour vous. Pour chaque projet vous aurez la liste de tout ce que Vim peut faire pour vous (intellisense - complétion intelligente -, indexation de toutes les fonctions obscures que les profs ont cachées dans des dossiers communs et bien plus encore !) et les fichiers et plugins à installer pour gagner en productivité.


  • 1A :
Searchtool-80%.png Aide détaillée : TP d'ADA avec VIM.
Searchtool-80%.png Aide détaillée : Projet C avec VIM.
Searchtool-80%.png Aide détaillée : TP d'assembleur avec VIM.
  • 2A : (Certaines de ces aides nécessitent d'avoir Vim 7.0 ou plus récent installé, recompilez le au besoin...)
Searchtool-80%.png Aide détaillée : TP de C++ avec VIM.
Searchtool-80%.png Aide détaillée : Vim pour le projet GL.
Searchtool-80%.png Aide détaillée : TP de BD avec VIM.
Searchtool-80%.png Aide détaillée : Projet de Spé avec VIM.