Oyo!
Histoire de concurrencer un peu le sujet sur l'Église d'Emacs, je me porte volontaire pour un petit topic de présentation de vim (et non pas vi, mais il fallait bien faire sensation dans le titre).
----------------------------------------------
0. Qu'est-ce que VIM?
----------------------------------------------
VIM (vi-improved, descendant de l'antique Vi) est un éditeur de texte modal, initialement en ligne de commande (donc accessible dans un terminal ou tty sans interface graphique)
Un éditeur modal est un éditeur qui fonctionne par modes (uhuhu), c'est-à-dire que les fonctionnalités et commandes habituelles sont séparées en groupes sémantiques et ne sont utilisables que dans ces groupes (ou leur comportement est modifié dans les autres). Par exemple, vous ne pourrez écrire du texte qu'en mode Insertion; par contre, les lettres de l'alphabet sans modificateurs (donc sans control, shift, alt, ...) pourront être utilisées en mode Normal: étant donné que vous n'êtes pas censé vouloir écrire du texte (puisque vous n'êtes pas en mode Insertion), toutes les lettres peuvent ainsi être utilisées comme des commandes, au même titre que Ctrl+a ou Alt+m, par exemple.
C'est là tout le principe et la force de vim; en séparant la saisie du texte du traitement de ce dernier, on a la possibilité de toujours avoir des raccourcis courts, simples et accessibles sans effort, permettant de passer des heures dans l'éditeur en faisant le moins de mouvements possible.
----------------------------------------------
1. Présentation de VIM
----------------------------------------------
/ / / ---------------------------------
/ / / 1.1 Pourquoi VIM?
/ / / ---------------------------------
+ Ultra léger et rapide à démarrer
+ Accessible sans interface graphique
+ Ultra personnalisable avec des options à la pelle et le langage VimScript (qui ressemble au bash)
+ Modal
+ Conçu pour être ergonomique
+ Configurable dynamiquement à la volée
+ Possibilité de tester et compiler ses fichiers à l'intérieur de vim
/ / / ---------------------------------
/ / / 1.2 Pourquoi pas VIM?
/ / / ---------------------------------
- L'édition modale et les raccourcis peuvent sembler rébarbatifs
- La configuration par défaut est quasiment inutilisable en environnement de production
- La gestion des extensions est archaïque sans Pathogen ou Vundle
- Configuration éparpillée et pas forcément évidente
- Certains concepts ou noms de concepts sont à l'opposé des idées admises
/ / / ---------------------------------
/ / / 1.3 Et à quoi ça sert?
/ / / ---------------------------------
Éditer du texte. Et rien d'autre. Je vois d'ici venir les utilisateurs d'emacs avec leur système d'expl... éditeur complet. Ici, pas de froufrou qui pend au rétroviseur, pas de partie de pacman entre deux compilations, pas de vidéos dessinées en ASCII à l'intérieur d'un gestionnaire de mails à l'intérieur d'un émulateur gameboy lancé par l'éditeur.
Non non non Môsieur, vim édite du texte, et c'est tout. Mais qu'est ce qu'il le fait bien!
Plus sérieusement, VIM, par défaut, ne fait effectivement qu'éditer du texte. Par contre, grâce à ses possibilités de personnalisation infinies et l'existence d'une tonne de plugins, il est possible d'en faire plus ou moins ce que vous voulez, à partir du moment où ça reste dans le domaine de l'édition de texte. Vous trouverez à la fin de ce guide un exemple de transformation de vim en IDE plus que complet, par exemple, qui n'a rien à envier aux plus grands du milieu.
Évidemment, des jeux et des utilitaires (prise de notes, client irc, calculatrice scientifique, ...) sont disponibles avec un peu de bricolage ou quelques plugins. Mais ça reste anecdotique: avec vim, un programme pour chaque chose et on ne mélange pas tout.
----------------------------------------------
2. Guide de survie de VIM
----------------------------------------------
/ / / ---------------------------------
/ / / 2.1 Concepts principaux
/ / / ---------------------------------
Dans VIM, il convient de comprendre plusieurs concepts de base afin de se débrouiller convenablement.
/ / / ---------------------------------
/ / / 2.2 Raccourcis principaux
/ / / ---------------------------------
échap: retourne au mode NORMAL.
En mode NORMAL:
i/a/A: entrer en mode insertion au curseur/curseur+1/fin de ligne.
o/O: entrer en mode insertion dans une nouvelle ligne sous/sur la ligne actuelle.
rR: entrer en mode remplacement pour un caractère/jusqu'au prochain changement de mode
h/j/k/l: se déplacer à gauche/bas/haut/droite.
gg: aller en première ligne.
G: aller en dernière ligne.
dd: effacer/couper la ligne courante.
p: coller la ligne dans le buffer.
yy: copier la ligne courante.
u: annuler la dernière opération.
Ctrl-R: rétablir la dernière annulation.
...
Et ainsi de suite. Il est essentiel de comprendre que la quasi totalité de ces commandes fonctionne avec des modificateurs vimiens: sachant que "$" indique la fin d'une ligne et que "w" indique le début du mot suivant, taper "d$" va supprimer la ligne actuelle jusqu'à la fin de la ligne, tandis que "cw" va entrer en mode insertion en effaçant du curseur jusqu'au début du mot suivant. Suivant le même principe, 4j déplace de 4 lignes vers le bas et 8yy copie les 8 prochaines lignes.
Le principe des modificateurs est vraiment puissant; essayez! Tout est plus ou moins combinable à la façon de phrases, pouvant donner lieu à des commandes de manipulation rudement pratique.
...
...
(suite)
----------------------------------------------
3. Plugins et exemple de configuration
----------------------------------------------
Il est possible de personnaliser vim de façon incroyable grâce aux plugins. Pour se faire, vous pouvez les télécharger et les décompresser dans votre ~/.vim, mais c'est plutôt archaïque et long à mettre à jour. Il existe des plugins gestionnaires de plugins, très pratiques, comme Pathogen, qui permet de mettre les dossiers de plugins directement dans un même dossier, ou, mieux (selon moi), Vundle, qui permet, en spécifiant une adresse git ou vimscript dans votre fichier vimrc, de télécharger quand vous le voulez les plugins correspondants. Vous gérez et mettez ainsi à jour tous vos plugins en une ligne de commande.
Outre les plugins téléchargeables, vous pouvez également placer vos fichiers [filetype].vim dans ~/.vim/ftplugin afin d'indiquer à vim de charger des paramètres ou abbréviations particulières propres à certains formats de fichiers. Vous pouvez également le faire dans votre .vimrc, mais dans le cas d'abbréviations (par exemple en html pour les entités), c'est plus propre de le faire dans un fichier séparé.
Exemple de configuration, avec mon fichier .vimrc configuré de manière à retrouver toutes les fonctionnalités des IDE traditionnels (completion, snippets, highlighting poussé, regex, gestion de projet, intégration git, ...): http://pastebin.com/LXLkdLcB
Utilisant vundle, il vous suffira d'installer vundle manuellement puis de démarrer vim en tapant ":BundleInstall" afin de vous retrouver avec la même configuration, plugins compris.
--------------------
Il y aurait moyen de parler de vim pendant encore 30 ans sans tout couvrir, je vais donc m'arrêter là. En récupérant mon fichier ou d'autres fichiers de configuration, vous verrez qu'il y a encore des tas de concepts et fonctionnalités très pratiques disponibles dans vim (parfois exclusivement dans vim); à vous de les découvrir si ça vous intéresse, vous ne serez pas déçus
Bref, si vous êtes débutant, vous êtes bienvenue sur ce topic pour demander de l'aide ou des conseils de configuration; pour les intermédiaires et autres experts de vim, n'hésitez pas à partager vos astuces, configs et plugins fétiches
VI VI VI = 6 6 6
J'adore <cc>, voilà, c'est tout ce que j'ai à dire.
Au passage, sachez qu'il existe beaucoup de clones de Vi, comme Elvis par exemple (ne gère pas l'unicode >> /dev/null). Trouvez le vôtre, Vim est juste le plus complet et puissant de tous.
Par contre attention aux effets étranges à force de l'utiliser. Un deamon viendra à vous et vous verrez plusieurs fois des <dd>, <x> ou encore <p> dans vos textes.
Pourquoi autant d'engouement pour de simples éditeurs de texte ?
60sec est-ce que tu programmes?
C'est sûr que si tu n'utilises pas souvent un certain type d'outil, tu n'as aucun intérêt à choisir méticuleusement une marque / un modèle / etc.
Mais quand tu passes beaucoup de temps avec un logiciel, autant en choisir un qui soit efficace, adapté à tes besoins, etc.
J'utilisais geany quand je faisait du python, mais je comprends pas trop en quoi l'éditeur est si important, car au final ce n'est "qu'un" éditeur de texte.
Je programme mais j'ai une grosse flemme de devoir apprendre 20 000 raccourcis je trouve que l'autocomplétion, la fermeture automatiques des accolades/guillemets, le copier/coller suffit . Je suis pas sûre que vi/emacs m'apporte quelque chose (à part avoir le droit de troller l'adversaire).
Je lirai le pavé plus tard, ça me donnera peut-être des réponses
60sec > que ce soit pour les cours ou le loisir, je passe plusieurs heures d'affilée par jours devant mon éditeur de texte. Donc le moindre petit confort, la moindre petite fonction qui pourrait me faire économiser des mouvements de doigt, du temps ou de la fatigue visuelle est la bienvenue. Alors je vais peut-être, au final, avoir passé 10 ou 20 heures à configurer l'ensemble de mon environnement (éditeur, shell, thème de couleur, raccourcis, ...), mais au final ce sont des heures et des heures de gagnés niveau confort.
Si tu te sers ponctuellement d'un éditeur de texte pour configurer 2 ou 3 fichiers et puis basta je comprends tout à fait, un truc comme nano pourrait même suffir.
Après y'a aussi un peu le fait que je trouve ça cool de toujours pousser ses outils au maximum, je fais ça avec la plupart des programmes que j'utilise.
Caletlog ah d'accord alors tout s'explique
"au final ce n'est "qu'un" éditeur de texte"
Justement, non, selon moi. Enfin si, dans l'absolu, c'est que ça, c'est pas lui qui va coder à ta place. Mais comme je l'ai dit, quand tu passes des heures d'affilée devant un même éditeur, autant faire en sorte qu'il soit a) fonctionnel et b) adapté à ton moindre besoin. C'est bien plus qu'un simple support de développement, je trouve que c'est un outil qui fait partie intégrante de la chaîne de développement.
Je le poste souvent mais c'est *vraiment* un tuto court et génial pour apprendre à utiliser vim :
http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/
Y'a aussi le Vimtutor pour apprendre, il est très bien.
60sec >> Tu passes beaucoup de temps devant une chose bien précise, autant qu'elle soit la plus confortable possible. L'informatique, c'est aussi passer 1 ans pour gagner 10 secondes.
Après le gros problème c'est qu'étant un éditeur assez exotique niveau raccourcis, je perds complètement la possibilité d'être productif quand je passe à autre chose.
Sur les PC de mon IUT on a que Dreamweaver ( ), Netbeans et Eclipse et quand je dois les prendre je me retrouve avec des i, h,j,k,l, dd, ... dans tout le document et impossible de me souvenir des raccourcis "traditionnels", puisque j'ai passé tous mes programmes en raccourcis vim-like
« Par contre attention aux effets étranges à force de l'utiliser. Un deamon viendra à vous et vous verrez plusieurs fois des <dd>, <x> ou encore <p> dans vos textes. »
Ben, ça fait déjà deux cas.
Le deamon nous regarde.
Vim est pour moi le meilleur logiciel jamais crée, il est parfait dans son domaine.
Et c'est quoi le plugin pour ajouter la complétion ? Parce que ça m'intéresse
Et qu'est-ce que tu appelles "highlighting poussé" ?
Emacs est un mauvais système d'exploitation et un très mauvais éditeur.
Ouste le vilain troll.
C'est quoi le plugin pour avoir la complétion ?