Dompter Vim en Trois Temps: Par Yakhya Dabo
Dompter Vim en Trois Temps: Par Yakhya Dabo
Un espace de discussion est réservée sur le forum pour vous permettre de donner votre
avis sur le contenu de ce tutoriel : Commentez
Dompter Vim en trois temps par Yakhya Dabo
I - Découverte de Vim................................................................................................................................................. 3
I-A - Les ressources...............................................................................................................................................4
I-B - Pour commencer............................................................................................................................................4
I-C - L'aide.............................................................................................................................................................. 4
II - Temps 1 : Les principaux modes de Vim.............................................................................................................. 5
II-A - Le mode Normal........................................................................................................................................... 5
II-B - Navigation......................................................................................................................................................5
II-C - Notion de ligne..............................................................................................................................................6
II-C-1 - Notion de word.....................................................................................................................................6
II-C-2 - Précision pour copier, couper et coller................................................................................................ 7
II-C-2-a - Copier avec y (yank)................................................................................................................... 7
II-C-2-b - Couper avec d (delete)................................................................................................................8
II-C-3 - Les actions opposées.......................................................................................................................... 9
II-D - Le mode Insert..............................................................................................................................................9
II-D-1 - La commande <Ctrl-O>........................................................................................................................9
II-E - Le mode Command-Line............................................................................................................................ 10
II-E-1 - Les numéros de lignes.......................................................................................................................10
II-E-2 - Play with range...................................................................................................................................10
II-E-3 - Find and replace avec s.....................................................................................................................11
II-E-4 - Les filtres............................................................................................................................................ 12
II-E-5 - La recherche.......................................................................................................................................12
II-F - Le mode Visual........................................................................................................................................... 12
II-F-1 - Exemple avec <Ctrl-V>.......................................................................................................................13
II-G - What's next … ?......................................................................................................................................... 14
III - Temps 2 : Grok your Vim....................................................................................................................................14
III-A - Configuration de base................................................................................................................................15
III-B - Du Mapping pour aller plus vite !...............................................................................................................16
III-B-1 - j et k pour une navigation entre lignes virtuelles.............................................................................. 17
III-B-2 - Arrow keys désactivé........................................................................................................................ 18
III-B-3 - Édition de .vimrc avec <leader>ev et <leader>sv............................................................................. 18
III-B-4 - Basculer de relative à absolute.........................................................................................................19
III-B-5 - Bonus abréviation.............................................................................................................................. 19
IV - Conclusion.......................................................................................................................................................... 19
V - Remerciement......................................................................................................................................................19
-2-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
I - Découverte de Vim
Dans le livre The Pragmatic Programmer, l'un des must read du craftsman, les auteurs (Andy Hunt et Daves
Thomas) insistent sans cesse sur le principe D.R.Y (Don't Repeat Yourself). Il revient sous forme de leitmotiv dans
tous les chapitres. Le bon développeur, en vrai artiste, ne se répète pas. En plus de son langage de programmation
fétiche (Java, Scala, Ruby…) il doit disposer d'un IDE configurable dans sa boîte à outils, être à l'aise avec la
programmation shell pour automatiser les tâches courantes, et maîtriser du bout des doigts un éditeur de texte, “It
is better to know one editor very well, and use it for all editing tasks.” Puis, dans un style messianique, ils décrivent
l'éditeur du développeur : “The editor will be an extension of your hand; … Make sure that the editor you choose is
available on all platforms you use.” L'éditeur doit être configurable, extensible et programmable. Et voilà pourquoi
je veux vous présenter Vim comme étant l'éditeur du Développeur.
Vim (Vi IMproved) est un éditeur de texte libre, un parmi la vingtaine de clones de Vi. Pour rappel Vi existe depuis 1976;
une antiquité dans le temps informatique. Il a survécu à toutes les tempêtes qui ont secoué le monde informatique.
À l'origine Vi a été créé pour le système Unix dont il deviendra plus tard l'éditeur standard. C'est aussi un éditeur
modal : les touches du clavier sont interprétées différemment d'un mode à un autre. En mode Insert pour taper du
texte ou en mode Normal pour exécuter des commandes.
La première release de Vim voit le jour le 2 novembre 1991. Il sera publié sous licence GNU et disponible sur plusieurs
plateformes, Linux, Windows et Mac étant les plus populaires. Le projet a été initié par Bram Moolenaar pour pallier
les imitations de Vi en ajoutant de nouvelles fonctionnalités :
• le support de plugins ;
• l'édition de fichiers, via le réseau, avec les protocoles SSH et HTTP ;
• l'interaction avec la souris ;
• la coloration syntaxique, notamment pour les langages de programmation ;
• l'intégration d'un langage de script.
L'esprit de Vim est de réaliser toutes les actions possibles sans avoir besoin de lever les mains du clavier, en se
passant de la souris et des touches éloignées. Sa courbe d'apprentissage en forme de mur (Learning wall) peut être
interprétée de la manière suivante : « On ne s'investit qu'une seule fois, pour toujours ».
Je vous propose dans ce tutoriel, trois étapes pour dompter Vim. L'objectif est de vous convaincre qu'au-delà de
manipuler des fichiers de logs sur des serveurs distants, Vim peut être notre éditeur de texte au quotidien.
-3-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
La première partie présentera les commandes de base de Vim à travers ses principaux modes. La deuxième partie
portera sur la configuration, comment adapter l'outil à nos habitudes et nos besoins spécifiques sans violer le principe
DRY. Et dans la dernière partie, on présentera quelques plugins pour l'extension de Vim. Il est déconseillé de vouloir
commencer par connaître toutes les commandes de Vim. C'est pour ça que vous ne les verrez pas toutes. Dix pour
cent d'entre elles pourront couvrir vos besoins les plus courants.
Parmi les nombreuses ressources disponibles dans les bibliothèques et sur Internet quelques auteurs se distinguent
par la qualité très solide de leurs références :
Blogs
Livres
Vidéos
• Enregistrer : :w ;
• Enregistrer sous /fileName : :w/fileName ;
• Quitter définitivement : :q ;
• Quitter Vim provisoirement : <Ctrl-Z> (et fg pour revenir sur Vim) ;
• Afficher les numéros absolus : :set nu ;
• Afficher les numéros relatifs : :set relativenumber.
I-C - L'aide
Le dernier détail important, qui reste incontournable pour démarrer, c'est l'utilisation de l'Aide. Pour y accéder, il suffit
de taper help (ou :h)avec le mot clé en paramètre :
Si vous vous sentez prêt, la prochaine étape c'est par là, les principaux modes de Vim.
-4-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
Comme énoncé dans l'introduction, Vim est un éditeur modal. Chaque mode expose une manière différente
d'interpréter les touches du clavier et d'interagir avec l'éditeur pour effectuer des actions sur le texte. On en distingue
principalement quatre :
Dans la documentation, on peut trouver Command Mode à la place de Normal Mode. Ne pas
faire la confusion avec Command-Line Mode.
C'est le mode par défaut, le mode naturel de Vim, là où l'on passera le plus de temps. La majeure partie des
commandes de manipulation de texte (recherche, navigation, modification, suppression) s'effectuent en mode
Normal. Pour passer d'un mode à un autre, on passe par le mode Normal. Il suffit d'appuyer sur <ESC> pour y arriver.
II-B - Navigation
On peut utiliser les touches fléchées du clavier pour se déplacer dans le texte. Mais pour rester fidèle à l'esprit Vim,
il est recommandé d'utiliser les touches h(left), j(down), k(up) et l(right)
-5-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
Vim fait la différence entre une ligne virtuelle et une ligne réelle. La ligne virtuelle est celle affichée à l'écran. La ligne
réelle correspond à une ligne du fichier, elle se termine par le caractère <EOL>. Une ligne réelle peut correspondre
à plusieurs lignes virtuelles.
Déplacement avec j et k.
Déplacement avec gj et gk
Une autre subtilité dans Vim est la différence entre word (en minuscules) et WORD (en majuscules). Voici ce qu'on
peut lire dans le manuel (:help word) :
-6-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
Word avec W n'est délimité que par des espaces (tab, space ou <CR>). Il correspond à la définition grammaticale
d'un mot tandis que word avec w englobe les ponctuations « . », « ; », « ; », « _ », « - »…
En mode normal, les commandes de manipulation de texte sont de la forme : command <motion>. Sur son blog,
Steve Losh parle d'« action + complément d'objet ». L'action c'est le command et le complément d'objet correspond
au motion qui peut être une suite de caractères, de mots ou de lignes.
Exemple :
• d2d
command = d (delete)
motion = 2d (2 lines from cursor position)
• y2y
command = y (yank)
motion = 2y (2 lines from cursor position)
• caw
command = c (change)
motion = aw (arround word)
Chaque motion peut avoir un multiplicateur, 2d, 2y, 3w… Pour les lignes, on peut préciser la direction, vers le bas
(par défaut) ou vers le haut. La position du curseur est toujours le point de départ, le point 0.
Pour faire une action de copier, couper ou coller, on écrit ou lit dans le presse-papier. Avec Vim c'est dans le
registre qu'on agit. Il existe plusieurs registres, et le presse-papier en est un. Quand on fait un yank, un delete ou
un past, on écrit dans un registre spécifique appelé registre par défaut. Un article spécifique pourra être consacré
à la manipulation des registres.
-7-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
Il présente les mêmes motions que yy, avec daw, d2w, 2dw, d2d, d3k (4 lignes au-dessus).
Exemple avec yyp pour copier la ligne courante juste en dessous (effectue une duplication)
Exemple avec ddp pour inverser la ligne courante avec celle en dessous
-8-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
On se retrouve dans ce mode très spécialement pour taper du texte. C'est l'ultime mode des éditeurs de textes
classiques (notpad, sublime…). Il suffit de faire I, i, A ou la touche insert, depuis le mode Normal pour y arriver.
D'autres commandes d'édition du mode Normal (c, s, A) nous basculent directement dans ce mode.
Comme dit plus haut la majeure partie des commandes est utilisée en mode normal. En pleine édition on peut avoir
besoin de supprimer des lignes, remplacer des caractères, copier/coller, sauvegarder les dernières modifications…
La première solution est de faire <ESC> pour passer en mode normal, taper la commande, et faire « i » pour revenir
en mode insert. Un autre moyen, plus rapide, c'est d'utiliser <Ctrl-O>. Il nous permet de passer provisoirement du
mode Insert au mode Normal juste le temps de taper une commande du mode Normal.
(Dans le prochain chapitre, on montrera d'autres astuces plus pratiques pour taper des commandes depuis le mode
insert sans avoir à le quitter.)
-9-
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
C'est un peu l'équivalent du shell pour Vim. On y arrive en tapant « : » depuis le mode normal. Le prompt s'affiche
ensuite et nous laisse la main pour taper une commande. On peut aussi faire des recherches dans ce mode avec
« / » ou faire des filtres avec « ! ».
Toutes les lignes d'un fichier possèdent un numéro et la numérotation commence à 1. Le numéro d'une ligne peut
être « absolu » ou « relatif », en référence à la position courante, le point 0. Pour la plupart des actions sur les lignes,
on aura besoin des numéros « relatifs ».
1. :set nu ;
2. :set nonu
1. :set relativenumber ;
2. :set norelativenumber.
La force du mode Command-Line est la facilité de travailler sur des blocs de lignes, range.
Exemple de ranges :
• 1 : la première ligne ;
• $ : la dernière ligne ;
• . : la ligne courante ;
• 1,$ : de la ligne jusqu'à la dernière ligne ;
• .,2 : de la ligne courante jusqu'à la deuxième ligne ;
• % : l'ensemble des lignes (texte complet).
On peut aussi référencer les lignes de manières relatives, en ajoutant le signe « + » (vers le haut) ou « - » (vers
le bas) devant les bornes ;
• -1, -2 : de la première ligne (1) au-dessus de la ligne courante jusqu'à la deuxième ligne au-dessus de la ligne
courante.
• 1,+3 : de la première ligne (1) jusqu'à la troisième en dessous de la ligne courante.
Exemples
- 10 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
On peut exécuter une commande du mode normal tout en étant en mode Command -Line
• :s/oldWord/newWord : remplacer, sur la ligne courante, la première occurrence de oldWord par newWord.
• :s/oldWord/newWord/g : remplacer, sur la ligne courante, toutes les occurrences de oldWord par newWord.
• :s/oldWord/newWord/c : demande confirmation avant d'effectuer le remplacement
- 11 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
On peut appliquer le find and replace sur unrange. Exemple la commande :%s/oldWorld/newWorld/g remplace toutes
les occurrences de oldWorld par newWorld sur l'ensemble du texte. Sans l'option g, le remplacement ne portera que
sur les premières occurrences de oldWorld des différentes lignes du texte.
II-E-5 - La recherche
• /{pattern}<CR> : depuis le mode normal, nous permet de faire une recherche sur un mot.
• n : pour passer à l'occurrence suivante.
• N : pour passer à l'occurrence précédente.
En mode visual, comme son nom l'indique, on travaille sur une sélection de manière intuitive. La zone de sélection
peut porter sur des mots (commande v), des lignes ( commande V), ou un bloc (ensemble de colonnes) avec la
commande <Ctrl-V>. Une fois la sélection effectuée, on peut exécuter une commande du mode normal, faire <ESC>
et observer le résultat.
- 12 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
- 13 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
Pour ce qui est de la magie de Vim, on aurait pu s'en tenir à ce qu'on vient de voir, les différents modes de Vim avec
les commandes de base qui nous accompagnent au quotidien et les quelques cas d'utilisation. Des fonctionnalités
qu'on ne trouve pas ailleurs… Mais pour le plus timide des développeurs, il en faudra encore plus pour s'intéresser
à un nouvel outil. Certaines commandes peuvent être fastidieuses à taper. La tâche sera d'autant plus difficile qu'on
peut avoir à utiliser ces commandes tous les jours. Peut-on toujours se permettre de faire des allers-retours entre
le mode Insert et le mode Normal juste pour enregistrer, supprimer des lignes, mettre en majuscules… ? On verra,
dans la suite, à travers le fichier de configuration .vimrc, comment on peut personnaliser notre éditeur pour simplifier
les tâches courantes.
Après avoir été convaincu de changer votre éditeur pour Vim et avoir pris connaissance de quelques commandes
de base, place à la phase suivante : la configuration.
On n'écrit pas que du code dans notre travail. On s'exprime aussi par écrit, dans un langage plus humain, pour
échanger avec d'autres collaborateurs qui ne sont pas tout le temps du même métier : on n'est pas dispensé de la
maîtrise de l'orthographe. Voyons ce que le correcteur d'orthographe de Vim propose pour le spell checking.
Pour l'activation/désactivation… :
1. :set spell ;
2. :set nospell.
Le spell checking parait ici contre-intuitif. Pour chacune des commandes, on a au minimum deux caractères à taper,
y compris parfois un caractère spécial (« ] », «[ » ou « = »). Utiliser Vim de cette manière peut être très vite déroutant.
Les premiers signes de frustration font leur apparition, comme cet utilisateur qui se plaint sur Stackoverflow d'être
- 14 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
plus productif avec ses précédents éditeurs qu'avec Vim qu'on lui a pourtant présenté comme étant l'éditeur du
développeur…
I've heard a lot about Vim, both pros and cons. It really seems you should be
(as a developer) faster with Vim than with any other editor. I'm using Vim to do
some basic stuff and I'm at best 10 times less productive with Vim.
http://stackoverflow.com/questions/1218390/what-is-your-most-productive-shortcut-with-vim
Sans une configuration minimale l'éditeur reste très peu pratique. Pour découvrir la vraie puissance de Vim, il faut
l'adapter à ses habitudes. Le travail commence dans le fichier de config ~/.vimrc qui joue le même rôle que ~/.gitconfig
pour Git ou ~/.bashrc pour Linux. On peut trouver des fichiers .vimrc sur github, mais il vaut mieux en prendre un
qui soit basique et l'enrichir au fur et à mesure. Cela doit refléter une habitude qui n'est pas universelle. On trouvera
principalement dans le fichier des configs de base, des mappings et des macros (fonctions).
Dans la partie configuration, on met les options par défaut, celles dont on a besoin le plus souvent. Les options
rarement utilisées pourront être activées manuellement.
Exemple : puisqu'il est plus pratique de se repérer à partir de la position courante que des numéros de lignes, on
choisira par défaut l'affichage des numéros de lignes en mode relatif.
1. set relativeNumber
Si au cours d'une session, on veut passer à l'affichage en mode absolu, on exécute les deux commandes (en mode
command-line) :
1. :set norelativenumber ;
2. :set nu.
On va essayer de voir d'autres options que l'on peut avoir besoin de spécifier dans le fichier des configs.
1. set ignorecase ;
2. set smartcase.
Avec cette configuration si le mot recherché est en minuscules la casse n'est pas prise en compte. Par contre si une
des lettres du mot est en majuscule, on a la recherche en case-sensitive.
Ne pas rendre Vim compatible avec Vi. Si on active la compatibilité, on perd les fonctionnalités de Vim qui n'existent
pas dans VI :
1. set nocompatible.
1. set cursorline.
- 15 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
1. set showcmd.
1. set showmatch.
Activer la recherche incrémentale. La recherche s'effectue au fur et à mesure qu'on fait la saisie :
1. set incsearch.
1. set hidden.
1. set background=dark.
1. set encoding=utf8 ;
2. set fileencoding=utf-8.
Mettre quatre espaces pour l'indentation. On utilise soit la tabulation (tabstop) soit « >> » (shiftwidth).
1. set tabstop=4 ;
2. set shiftwidth=4.
1. set textwidth=80.
1. set linebreak.
Par défaut leader est mappé en « \ ». Il est remappé en « , » pour une utilisation plus simple :
Pour faire un petit parallèle risqué avec le développement : quand on a un bloc de code qui revient à différents endroits
d'un projet, on pense automatiquement à le simplifier par une structure plus compacte. C'est presque la même chose
avec le mapping, on cherche à simplifier pour aller encore plus vite. On y a recours généralement quand on doit
exécuter une combinaison de commandes fréquemment utilisées ou invoquer une fonction. On peut appliquer le
mapping à un mode spécifique, modal mapping (imap, nmap et vmap), ou à tous les modes, general mapping (map).
- 16 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
Une des contraintes quand on crée un mapping est d'avoir des collisions. Certains raccourcis peuvent être déjà définis
par l'OS, l'éditeur même, un plugin de l'éditeur ou une macro. On n'en crée pas délibérément. Quelques astuces sont
mises à notre disposition pour limiter les risques de collisions et aussi pour avoir des raccourcis plus intuitifs :
Le mode Insert est très pauvre. On doit le quitter à chaque fois qu'on doit faire une action un peu compliquée. Pour
supprimer une ligne par exemple, il faut en général faire :
Pour mettre un mot en majuscules depuis le mode, il faut au minium faire <esc>viwgUi.
Ces actions sont très courantes quand on fait de l'édition. Comme le développeur a horreur de la répétition, Vim nous
facilite la tâche avec le mapping qui nous permet de muscler notre éditeur.
En ajoutant ces lignes dans notre config, on pourra réaliser des actions sans quitter le mode Insert. Ctrl-D pour
supprimer une ligne, Ctrl-U pour mettre en majuscules un mot ou Ctrl-Y pour dupliquer une ligne :
1. nmap j gj
2. nmap k gk
Recursive mappings
1. map j gg
2. map Q j
Q est mappé en j , j mappé en gg, donc Q mappé en gg. On parle de recursive mapping
1. noremap W j
Si on ne veut pas de mapping récursif, on utilise le mot clé noremap. Ici W devient juste j et pas gg.
Pour se mettre à l'abri des mauvaises surprises, il est préférable d'utiliser par défaut un mapping non récursif.
- 17 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
1. inoremap jj <esc>
2. inoremap <CR> <esc>
3. inoremap <S-CR> <esc>
Certains proposent de désactiver les touches fléchées, avec la valeur Nop, pour se forcer à utiliser les touches hjkl
pour la navigation. D'autres proposent d'en faire un autre usage.
Leader
The leader is a kind of “namespace” to keep those customizations separate
and prevent them from shadowing default commands. (Steve Losh)
1. nnoremap <leader>i i
2. inoremap <leader>i <es>
1. nnoremap <leader>sn ]s
2. nnoremap <leader>sp [s
3. nnoremap <leader>sa zg
4. nnoremap <leader>sz z=
Il est très fréquent de vouloir faire des modifications sur .vimrc, et de voir les effets dans l'immédiat, alors qu'on est
en pleine édition. Voici un mapping simple qui facilite l'écriture et le chargement des modifications.
- 18 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/
Dompter Vim en trois temps par Yakhya Dabo
On peut avoir besoin de basculer entre le relative et l'absolute dans l'affichage des numéros de lignes. Avec ce
mapping la commande est <leader>n
1. function! NumberToggle()
2. if(&relativenumber == 1)
3. set norelativenumber
4. set number
5. highlight LineNr ctermfg=yellow
6. else
7. set nonumber
8. set relativenumber
9. highlight LineNr ctermfg=green
10. endif
11. endfunc
12. nnoremap<leader>n :call NumberToggle()<CR>
iabbrev @@ [email protected]
Elle nous permet d'insérer rapidement les champs qu'on utilise couramment dans le texte, prénom, nom, adresse e-
mail, signature, site web… Avec la config ci-dessus, on peut se limiter à taper @@ pour l'e-mail ou cc pour copyright.
IV - Conclusion
C'est dans la partie configuration qu'on découvre la vraie puissance de Vim. Le mapping doit être le premier réflexe
pour rendre plus simples des actions complexes et pour éviter des répétitions comme les allers-retours entre le mode
normal et les autres modes. N'hésitez pas à vous inspirer d'exemples sur le net pour enrichir votre configuration.
V - Remerciement
Ce tutoriel a été publié avec l'aimable autorisation de la société Arolla. Nous remercions Claude Leloup pour sa
relecture et Laethy pour la mise au gabarit.
- 19 -
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par
les droits d'auteur. Copyright ® 2016 Yakhya Dabo. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans
l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.
https://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/