Hello !

Vous connaissez Vim ? Mais si, quand vous êtes sur Linux et que le seul éditeur disponible c’est lui ! Quand vous ne comprenez jamais quand est-ce qu’il va écrire dans le fichier ou s’il va exécuter des commandes… Vim, ce grand incompris, si difficile à utiliser…

Et pourtant, quand vous faites quelques recherches (j’ai pas dit RTFM..) pour retrouver ces #!@?!#@! de commandes pour enfin réussir à faire une modif dans un fichier de conf, vous tombez sur pleins d’articles où les gens sont heureux depuis qu’il maîtrise cet outil du diable ! Comment est-ce possible ? Et il y a des gens qui l’utilise pour faire du dév ??? Moi qui n’arrive pas à modifier mon .conf

Allez, nous allons faire un tour des fonctionnalités pour (enfin!) réussir à en faire quelque chose, voir l’apprécier, et peut-être même en tomber amoureux ! J’exagère un peu mais, même si la courbe d’apprentissage est assez raide, on peut finir par le trouver bien utile. Pour ma part, j’en suis très content quand je dois éditer des fichiers sur des machines un peu légères (il marche très bien sur un raspberry par exemple) ou même pour coder des petits projets.

Allez, let’s dive into vim !

Guide de survie

Il faut comprendre une chose avec Vim. Il fonctionne selon plusieurs modes, chacun avec son comportement et permettant de réaliser des actions particulières. Les trois les plus importants sont :

  1. normal : le mode par défaut au démarrage. Il permet de se déplacer dans le texte et de le manipuler (copier, couper, coller).
  2. insert : comme son nom l’indique, permet d’insérer du texte.
  3. visual : essentiellement pour faire des sélections, sert par exemple pour copier des blocs de commandes à répeter.

La difficulté lorsque l’on débute avec Vim, c’est de passer du mode normal au mode insertion puis revenir au mode normal pour enregistrer ses modifications.

Pour entrer dans le mode insert, appuyer sur i. Faites vos modifications puis appuyer sur echap pour revenir au mode normal. Sauvegarder vos changements en faisant les touches : (deux points) puis w (comme write), appuyez sur entrée.

Ca y est, vous savez éditer un fichier avec vim. C’était si compliqué ?

Un VIM un peu plus confortable

VIM contient pas mal de fonctionnalités incluses par défaut. Pour les charger à l’ouverture, il faut paramétrer le fichier ~/.vimrc avec les options voulues. Je vous ai préparer un gist avec un vimrc fonctionnel qui ne nécessite aucune dépendances extérieures (contrairement à la troisième partie de cet article où on fera de VIM une bête de concours !). J’ai commenté les principales lignes, n’hésitez pas à me laisser un commentaire si vous souhaitez plus d’info ;-)

" mode avancé activé
set nocompatible
filetype off

" numérotation des lignes
set number

" coloration automatique
syntax on

" touche leader (= la virgule)
" cela ne sert pas ici, je le
" laisse pour mémoire
let mapleader=","

" on désactive le retour à la ligne
set nowrap

" indentation de 4 espaces, y compris pour 'tab'
set tabstop=4
set shiftwidth=4
set expandtab
set softtabstop=4

" on rétabli le fonctionnement 'normal' de 'backspace'
set backspace=indent,eol,start

" indentation automatique
set autoindent

" recherche sans respecter la casse
set ignorecase
" recherche en rotation (on revient au début du fichier à la fin)
set incsearch
" surbrillance du terme recherché
set hlsearch
" on désactive la surbrillance (virgule + espace)
nmap <silent> <leader><space> :noh<CR>

" pas de backup, fichier temp, etc
set nobackup
set nowritebackup
set noswapfile

" pas d'alerte
set novisualbell
set noerrorbells

" utiliser les onglets (F7 = précédent, F8 = suivant)
" ouvrir un nouvel onglet = ':tabedit {fichier}'
nmap <F7> :tabprevious <CR>
nmap <F8> :tabnext <CR>
map <F7> :tabprevious <CR>
map <F8> :tabnext <CR>
imap <F7> <Esc> :tabprevious <CR>i
imap <F8> <Esc> :tabnext <CR>i

VIM en tant qu’IDE

Là, on passe au chose sérieuse… On peut en faire quelque chose de vraiment puissant, avec autocomplétion et tout le toutim.

Gestionnaire de plugins

On commence par installer le gestionnaire de plugins. Il en existe plusieurs, mon préféré est Vundle. Pour l’installer (nécessite git) :

mkdir ~/.vim/bundle  
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

Il faut modifier son .vimrc pour prendre en compte les plugins (adapté directement de la doc) et ajouter les lignes suivantes :

set nocompatible    " version améliorée de Vi
filetype off        " nécessaire

" on indique le chemin de l'outil de gestion des scripts puis on l'appelle  
set rtp+=~/.vim/bundle/Vundle.vim  
call vundle#begin()  

" on charge les plugins, le premier étant Vundle lui-même (obligatoire)
Plugin 'VundleVim/Vundle.vim'  

On peut maintenant y ajouter nos plugins selon cet exemple :

" Quelques exemples des formats supportés.
" Toujours garder les plugins entre vundle#begin/end.
" plugin d'un dépôt GitHub
Plugin 'tpope/vim-fugitive'
" Plugin git qui n'est pas hébergé sur GitHub
Plugin 'git://git.wincent.com/command-t.git'
" Dépôt git sur notre machine locale (utile quand on développe son propre plugin)
Plugin 'file:///home/gmarik/path/to/plugin'
" Le script sparkup est dans un sous répertoire du dépôt appelé vim.
" Indiquez correctement le chemin d'exécution
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Installer L9 et éviter les conflits de nom si vous avez déjà
" différentes versions quelque part.
Plugin 'ascenator/L9', {'name': 'newL9'}

" Tous les plugins doivent être définis avant cette ligne
call vundle#end()            " nécessaire
filetype plugin indent on    " nécessaire

Plugins principaux

Voilà, une fois que vous maîtriserez VIM et ces plugins, vous serez un vrai barbu ! ^^(ou une vraie barbue, why not :-) )

Références

Si vous voulez un peu de lecture :