Skip to content

Une configuration de Vim aux petits oignons !

juin 21, 2011 - Développement, Linux

VIM

Pour développer en PHP, j’ai commencé il y a fort longtemps avec Notepad++, puis je me suis orienté vers des IDE plus costauds tels qu’Eclipse ou Netbeans. Néanmoins, ceux-si sont particulièrement lourds, et ne sont pas forcément très efficaces. L’auto-complétion sur des projets importants incluant des frameworks tels que Zend ou Symfony n’est pas toujours très rapide, la navigation entre les fichiers n’est pas forcément optimisée, etc. C’est pourquoi je me suis tourné vers Vim.

Voici quelques raisons pour lesquelles je me suis tourné vers cet éditeur qui en rebutera plus d’un :

  • Hautement personnalisable : avec de l’expérience et une connaissance poussée de l’éditeur, il y a moyen de le personnaliser d’une manière quasi-infinie.
  • Fourni avec toutes les distributions standards : dans la mesure où je développe de plus en plus dans une VM, avoir un utilitaire en mode console nous évite l’installation d’une interface graphique alourdissant l’empreinte mémoire laissé par la machine virtuelle, et donc les performances globales de la machine. Et je ne parle même de l’utilisation d’un projet configuré à travers un partage Samba, où Netbeans et Eclipse sont d’une lenteur abominable !
  • Navigation optimisée : combien de minutes perdues à chaque fois à alterner sans cesse entre vue et action, à se perdre dans l’arborescence des plus prolixes, ou encore à attendre que le projet se rafraîchisse (merci le manque de cette option cruciale sous Netbeans) ? Avec Vim, plus de soucis.

Bref, dans l’ensemble, Vim est pour moi un bon choix en tant qu’éditeur, et je vais vous partager ici ma configuration détaillée.

Configuration générale

Toute la configuration de Vim se fait dans le fichier ~/.vimrc.

Héritage avec la configuration globale

Pour récupérer la configuration par défaut de la machine (quitte à la surcharger), on inclue (s’il existe) le fichier de configuration global /etc/vim/vimrc.local.

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif

Format de fichiers

On développe en UTF-8, avec des sauts de ligne de type Linux. Cela se traduit par :

set fileformat=unix
set encoding=utf-8

Compatibilité Debian

Pour être sur de la compatibilité de Vim avec les distributions à base de Debian, on laisse le bloc par défaut :

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
" Adds automatically 'set nocompatible' option.
runtime! debian.vim

Bien entendu, si vous êtes sur une autre distribution, inutile de placer ces quelques lignes. ;)

Gestion des tabulations

Sous Symfony, la norme est de ne pas utiliser de tabulations, mais à la place, deux espaces. Pour se faire, on ajoute les lignes suivantes :

set expandtab
set softtabstop=2
set shiftwidth=2

La première ligne permet d’insérer des espaces plutôt que des tabulations, ce que nous voulons. Quant à la deuxième, il s’agit du nombre d’espaces.

La dernière ligne en revanche est un peu plus énigmatique. Elle permet de spécifier le nombre d’espaces lors de l’utilisation des opérateurs d’indentations << et >>.

Indentation automatique

Pensons également à l’indentation automatique, ce qui est utile par exemple lorsque vous implémentez une fonction : les accolades se positionneront correctement automatiquement.

set autoindent

" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
if has("autocmd")
  filetype plugin indent on
endif

Thème

Reposons nos yeux en modifiant les couleurs par défaut, pouvant être non adaptées à un fond foncé.

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
set background=dark

Numérotation des lignes

On affiche les numéros de ligne par défaut :

set number

Coloration syntaxique

Chose que l’on attend en tant que développeur, activons la coloration syntaxique :

syn on

Sauvegarde de la dernière position

Pour revenir à la position depuis laquelle vous avez fermé un fichier, le bloc suivant sera votre allié :

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

Paramètres par défaut

Voici un ensemble de paramètres que Vim vous conseille d’activer par défaut. Ceux-ci sont commentés, je vous laisse donc vous y référer.

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
set showcmd         " Show (partial) command in status line.
set showmatch       " Show matching brackets.
set ignorecase      " Do case insensitive matching
set smartcase       " Do smart case matching
set incsearch       " Incremental search
set autowrite       " Automatically save before commands like :next and :make
set hidden          " Hide buffers when they are abandoned
"set mouse=a        " Enable mouse usage (all modes)

Comme vous pouvez le constater, j’ai désactivé l’utilisation de la souris. Choix purement personnel, que vous êtes libre ou non de suivre. ;)

Empêcher le retour à la ligne (wrap)

Par moment, on peut avoir des lignes de code particulièrement longues. Par défaut, Vi met un retour à la ligne pour vous empêcher de devoir scroller à l’horizontal. Personnellement, je trouve que cela empêche la bonne lisibilité du code. J’ajoute donc la ligne suivante à mon fichier :

" Do not cut lines when too long
set nowrap

Commandes personnalisées

J’utilise Subversion dans la quasi-totalité de mes projets Web. C’est pourquoi j’ai configuré certains raccourcis pour effectuer les commandes les plus courantes.

silent map <F9> :!svn up <CR>
silent map <F10> :!svn diff <CR>
silent map <F11> :!svn commit <CR>

Ainsi, j’ai relié la touche F9 à la commande svn up pour mettre à jour les sources de mon projet. De même, j’effectue un différentiel avec la touche F10, et je commit avec la touche F11.

Vous pouvez réaliser toute sorte de traitement avec ces différents raccourcis, et je ne saurais trop vous conseiller de les utiliser. ;)

N’hésitez pas à partager vos autres options de configuration. Je suis loin d’être un expert sous Vim, et toute astuce est bonne à prendre et à placer dans les commentaires. :)

A noter qu’il existe également une série de plug-ins que j’utilise au quotidien. Mais, pour vous éviter un billet de 10 kilomètres de long, ceux-ci feront l’objet de billets séparés.


Comments

There are no comments on this entry.

Trackbacks

There are no trackbacks on this entry.

Add a Comment

Required

Required

Optional