Il y a quelques jours je vous parlais de ma découverte de l'éditeur VIM. J'ai depuis un peu affiné la configuration de mon éditeur. Je vous la partage ici en vous expliquant chaque choix que j'ai effectué. À vous de voir ce qui vous intéresse ou ce qui est à jeter.
À noter que cette configuration est adapté au travail de texte. Je n'ai pas encore commencé à coder sous vim mais je compte le faire prochainement, ma configuration évoluera à ce moment-là.
Configuration général
L'option nocompatible me permet de stipuler à VIM que je ne veux pas des anciens raccourcis VI et que je veux un comportement 100% vim approved. Je n'ai jamais prit d'habitude à VI, je pense donc qu'il serait de mauvais gout d'ouvrir la porte à des habitudes obsolètes ;)
set nocompatible
Je précise ensuite l'encodage par défaut de mes fichiers. J'ai pris l'habitude de travailler en UTF-8 autant que possible, je demande donc à VIM d'en faire de même.
set encoding=utf-8
Affichage
Je vais maintenant m'occuper de paramétrer le look de VIM et les fonctionnalités concernant principalement l'affichage. Je vais donc commencer par activer la coloration syntaxique et choisir mon thème. Pour ce dernier, je vous conseille fortement de faire un tour sur le site vivify qui vous permet de visualiser différents thèmes et de choisir celui qui vous convient. Personnellement, mon choix s'est porté sur jellybeans.
syntax on " Activation Coloration syntaxique
colorscheme jellybeans " Choix du theme
Toujours dans le graphique, je ne conçois pas de travailler sans avoir mon numéro de ligne facilement accessible. Cette information va m'être très utile quand je vais travailler avec des déboggueurs ou des compilateurs (Latex par exemple :p ) qui m'indiquera un numéro de ligne. J'active donc cette option assez simplement.
set number
Je m'occupe ensuite de ma barre de statut. Je veux que VIM m'affiche quelque chose genre ceci :
~/test.t2t[+] [FORMAT=unix] [TYPE=TXT2TAGS] [POS=5,8]
Il y a donc le nom du fichier, le mode (insertion, visuel, commande), des informations sur le format et le type de fichier repéré par Latex, et enfin un rappel de la position de mon curseur. Cet affichage demande le paramétrage suivant :
set laststatus=2 " Nombre de ligne de statut
set statusline=%F%m\ %r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v]
Dernier point d'affichage que je compte paramétrer : le folding. Vous savez, la fonctionnalité qui permet de plier et déplier des parties de votre document. Dans mon cas, je fais du texte, le folding à donc assez peu de sens. De plus je ne maitrise pas encore toutes les commandes basiques de l'éditeur, je préfère donc éviter de me rajouter de la complexité pour l'instant. Je la désactive donc :
set nofoldenable
Comportement à la saisie
Occupons-nous maintenant du comportement que VIM va avoir pendant que je tape mes petits textes. Premier point que je juge très important : l'indentation. J'apprécie qu'un éditeur me mâche le boulot de ce coté là, surtout s'il le fait correctement. Je vais donc activer cette fonctionnalité mais demander à l'éditeur de ne pas utiliser le caractère tabulation mais des espaces, 4 pour être précis (habitude de pythoniste).
set autoindent "Indentation automatique
set smartindent "Et fait de manière intelligente ;)
set shiftwidth=4 "Longueur des décalages VIM = 4
set tabstop=4 "Longueur de la tabulation = 4
Travailler sous VIM avec des lignes trop longue est, à mon sens, un vrai calvaire. Le déplacement devient vite assez ch***, euh, compliqué ;) Je préfère donc demander à VIM de me faire des retours à la ligne. Ici, il va les faire quand il arrivera à 8 caractères de mon bord d'écran.
set wrap " Activation du wrap
set wrapmargin=8 " Nb de caractère depuis le bord extérieur
Bon, j'avoue, j'ai aussi de sales habitude de windowsien, notamment concernant le comportement de la touche backspace. Je demande donc à VIM de me restituer un fonctionnement traditionnel (honte à moi).
set backspace=indent,eol,start
Backup
Je m'attaque enfin au problématique de backup et d'historique. J'active le backup automatiquement et configure l'historique à un niveau acceptable. J'en profite pour paramétrer aussi le nombre d'action mémoriser pour le "undo". Je profite aussi pour dire à VIM de ne pas laisser trainer ses backups n'importe où ! Je les centralise directement dans le dossier de vim.
set backup "Activation de l'historique
set history=50 "Niveau de l'historique
set undolevels=50 "Nb de undo
" Backup dans ~/.vim/backup
if filewritable(expand("~/.vim/backup")) == 2
" comme le répertoire est accessible en écriture,
" on va l'utiliser.
set backupdir=$HOME/.vim/backup
else
if has("unix") || has("win32unix")
" C'est c'est un système compatible UNIX, on
" va créer le répertoire et l'utiliser.
call system("mkdir $HOME/.vim/backup -p")
set backupdir=$HOME/.vim/backup
endif
endif
Les Extensions
Passons maintenant à la configuration des plugins et des fonctionnalités supplémentaires. Les lignes suivantes définissent la langue du correcteur d'orthographe et le nombre de suggestion que j'attends en cas de complétion. Je configure également la localisation de LanguageTool qui me sert de correcteur de grammaire. J'ai déjà abordé ce plugin dans le précédent post, je ne rentrerai donc pas dans le détail. Je n'active pas le correcteur par défaut, je préfère l'appeler volontairement par un set spell lorsque j'en ai besoin.
set spelllang=fr
set spellsuggest=5
let g:languagetool_jar='~/.vim/plugin/LanguageTool/LanguageTool.jar'
Je configure ensuite très rapidement NERDTree. Cette extension permet d'obtenir un navigateur de fichier directement dans VIM. L'extension me convient très bien tel quel à part un détail : je veux que l'explorateur se ferme après ouverture d'un fichier. Je le précise donc ici.
let NERDTreeQuitOnOpen = 1
J'utilise un second plugin qui m'affiche les buffers sous forme d'onglet : miniBufExplorer. Ce plugin est très paramétrable. Les lignes suivantes correspondent vraiment à mon usage. Le mieux pour le configurer à votre tour est de lire la documentation de l'extension qui est assez bien faite :)
let g:miniBufExplorerMoreThanOne=0
let g:miniBufExplMapWindowNavVim = 0
let g:miniBufExplMapWindowNavArrows = 1
let g:miniBufExplMapCTabSwitchBufs = 1
let g:miniBufExplUseSingleClick = 1
Sous un de mes Linux, j'ai rencontre un souci d'accent aigu dans les fichiers Latex : l'accent refusait de s'écrire ! J'ai trouvé sur internet la parade suivante qui marche à merveille :
imap <buffer> <leader>it <Plug>Tex_InsertItemOnThisLine
Et voilà, vous êtes arrivés à la fin de ma configuration. La suite dans un prochain épisode dédié à VIM et à Java. Je pense aussi vous parler très prochainement de I3, un Tiling Manager
Complément suite aux commentaires
Un commentaire très intéressant m'a signalé une astuce pour la navigation dans les lignes trop longues. Merci à lid.
nnoremap j gj
nnoremap k gk
Ces deux lignes permettent de reconfigurer les touches de navigation j et k pour passer d'une ligne apparence à l'autre (et non d'une ligne réèl). Ce tips est très intéressant et je l'ajoute dès maintenant à ma configuration :)