Avertissement: Cet article date de 2015. J'utilise Neovim à présent et je détaille mes astuces sur mon wiki.

Cette semaine, j'ai été amené à réinstaller un ordinateur sous Debian 7 "Wheezy" vers Debian 8 "Jessie". J'ai du à nouveau jeter un œil à ma configuration de Vim. Dans la foulée, je suis tombée sur toute une série d'articles me vantant tels ou tels plugins pour me changer la vie. J'ai donc essayé pas mal de choses. Voici un petit résumé de ma configuration et des quelques plugins et astuces qui me sont devenus indispensables.

Installation de Vim

C'est évidemment la première étape.

$ sudo aptitude install vim

Une fois que vim est installé et que vous l'avez utilisé au moins une fois, un fichier .viminfo est créé dans votre home. Il contient l'historique des commandes utilisées, l'historique des fichiers ouverts avec Vim et toute une série d'autres choses qui vous seront peut-être utiles un jour. Personnelement, je ne l'ouvre jamais...

Configuration de base

Pour rendre Vim un peu plus sexy, on va créer le fichier de configuration ~/.vimrc et y rajouter quelques options. Ce fichier sera chargé au démarrage de Vim.

$ vim ~/.vimrc
" --- OPTIONS DE BASE
" Annule la compatibilité avec Vi
  set nocompatible

" Affichage
  set title        "Met à jour le titre de votre fenêtre ou de votre terminal
  set number       "Affiche le numéro des lignes
  set ruler        "Affiche la position actuelle du curseur
  set wrap         "Affiche les lignes trop longues sur plusieurs lignes
  set scrolloff=3  "Affiche un minimum de 3 lignes autour du curseur (pour le scroll)

" Recherche
  set ignorecase   "Ignore la case lors d'une recherche
  set smartcase    "Si une recherche contient une majuscule, réactive la sensibilité à la case
  set incsearch    "Surligne les résultats de recherche pendant la saisie
  set hlsearch     "Surligne les résultats de recherche

" Beep
  set noerrorbells "Empêche Vim de beeper

" Active le comportement habituel de la touche retour en arrière
  set backspace=indent,eol,start

" Cache les fichiers lors de l'ouverture d'autres fichiers
  set hidden

" Active les comportements spécifiques aux types de fichiers comme la syntaxe et l'indentation.
  filetype plugin indent on  
  syntax enable

" Gestion des tabulations (Ctrl + T pour avancer d'une colonne, Ctrl + d pour reculer)
  set sw=2

" Gestion du clipboard système
  set clipboard=unnamed

" Désactiver la touche Echap (Esc)
  :imap ;; Esc
  :map ;; Esc

Toutes ces options ne sont pas indispensables. Testez celles qui vous semblent intéressantes, modifiez-les comme bon vous semble. Je précise qu'une bonne partie de ces options se retrouvent sur beaucoup de sites et aussi dans le très bon livre Vim pour les humains.

Installation de Pathogen

Pathogen est la première extension que nous allons installer. Pourquoi ? Parce qu'elle permet de faciliter l'installation de toutes les autres, à la manière de pip pour Python. Elle est en tout cas conseillée dans la plupart des articles qui parlent de Vim et de ses plugins.

On crée tout d'abord les dossiers ~/.vim/autoload et ~/.vim/bundle. Ensuite, on télécharge le fichier pathogen.vim avec la commande curl :

$ mkdir -p ~/.vim/autoload ~/.vim/bundle
$ curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Ensuite, on peut modifier le fichier ~/.vimrc et ajouter l'appel à pathogen.

$ vim ~/.vimrc
"Appeler Pathogen ( https://github.com/tpope/vim-pathogen )
  execute pathogen#infect()

Installation d'autres extensions

Installation du thème Solarized

Solarized est un thème pour Vim. Il permet de ne pas confondre certains caractères ( o, O, 0, i, I, l, L, ...) et aporte une colorisation sympathique de votre éditeur préféré. Grâce à l'installation de Pathogen, l'installation se fait en deux commandes et une modifications dans le fichier ~/vimrc :

$ cd ~/.vim/bundle
$ git clone git://github.com/altercation/vim-colors-solarized.git
$ vim ~/.vimrc
"Thème Solarized ( https://github.com/altercation/vim-colors-solarized )
  set background=dark
  colorscheme solarized

Il peut y avoir un conflit entre les couleurs du terminal et les couleurs de Vim. Le plus simple si vous l'utilisez sur votre ordinateur, c'est de mettre le thème Solarized pour le terminal. Sur un serveur ou un ordinateur où vous ne voulez pas le thème Solarized, il faut rajouter une ligne dans ~/.vimrc :

$ vim ~/.vimrc
"Thème Solarized ( https://github.com/altercation/vim-colors-solarized )
  set background=dark
  let g:solarized_termcolors=256
  colorscheme solarized

Installation de Gundo

Gundo permet de naviguer dans l'historique de modifications d'un fichier de manière beaucoup plus simple que la commande undo intégrée à vim. Pour que ce plugin puisse fonctionner, il faut installer vim-nox et bien évidemment Pathogen.

$ sudo aptitude install vim-nox

Une fois vim-nox installé, on télécharge gundo et on le placer dans le dossier ~/.vim/bundle/. Ensuite, on rajoute ces lignes dans ~/.vimrc :

$ git clone http://github.com/sjl/gundo.vim.git ~/.vim/bundle/gundo
$ vim ~/.vimrc
"Gundo ( http://sjl.bitbucket.org/gundo.vim/ )
  noremap <F5> :GundoToggle<CR>

Pour rendre l'historique de Gundo persistant et garder une trace de toutes les modifications réalisées sur nos fichiers avec Vim, on crée un dossier ~/.vim/gundodir et on le renseigne dans le ~/.vimrc :

$ mkdir -p ~/.vim/gundodir
$ vim .vimrc
"Gundo persistant
  set undofile
  set undodir=~/.vim/gundodir

Installation de NERDTree

NERDTree permet d'avoir un navigateur de fichiers intégré à Vim, ce qui permet de passer d'un à l'autre sans quitter votre éditeur.

$ git clone "git://github.com/scrooloose/nerdtree" ~/.vim/bundle/nerdtree
$ vim ~/.vimrc
"NERDTree ( https://github.com/pendulm/nerdtree )
  noremap <F9> :NERDTreeToggle<return>
  "BONUS: active NERDTree si on utilise pas d'argument pour ouvrir vim
  autocmd VimEnter * if !argc() | NERDTree | endif

Vous pouvez maintenant naviguer dans votre arborescence de fichiers facilement, en appuyant sur la touche F9 dans Vim.

Autres extensions

Il y a une quantité d'autres extensions très intéressantes à installer avec Vim. Par exemple, SuperTab, Jedi-vim, ConqueTerm, ... Je détaillerai peut-être l'installation d'une ou l'autre prochainement.

Astuces diverses

Utiliser la même configuration pour l'utilisateur root (sudo) que l'utilisateur courant

Pour garder toutes les fonctionnalités des plugins installés ci-dessus quand on modifie un fichier en root ou avec sudo, on fait un lien symbolique de notre configuration locale dans le dossier /root/ :

#sauvegarde de votre config vim root/sudo (si elle existe) :
$ sudo mv /root/.vimrc{,.bak}
$ sudo mv /root/.vim{,.bak}

#création des liens symboliques
$ sudo ln -s /home/simon/.vimrc /root/
$ sudo ln -s /home/simon/.vim /root/

J'espère que ça vous aidera pour vous lancer dans le monde de Vim. Sinon, ça me servira au moins d'aide-mémoire. ;-)

Quelques liens

Joacodepel.tk

Artisan.karma-lab.net