Hello,

J’avais déjà écrit un article sur Vim il y a pas mal de temps. J’indiquais simplement ma configuration de l’éditeur. Depuis ce jour j’ai fait quelques modifications pour mon confort, mais absolument rien d’extraordinaire. J’aurais pu reprendre mon ancien article, mais quitte à en écrire un nouveau.

Les différences par rapport à l’ancien se situent principalement au niveau de “l’auto-completion”. Le but est d’avoir quelque chose de mieux que des listes indigestes comme avec <CTRL-P>, <CTRL-N>,…. Qui ont bien entendu aussi leurs utilités. J’ai donc rajouté OmniCppComplete que vous devez installer dans votre ~/.vim. Les menus de popup s’affichent automatiquement dès que l’on tape un [.] ou une -> pour les structures par exemple. Si par contre vous tapez le nom d’une fonction et que vous voulez la liste des arguments, alors commencez à taper un peu son nom, puis elle sera visible dans un popup avec <CTRL-X> <CTRL-O>.

Le .vimrc ci-dessous créer également les tags à l’aide de <CTRL-F12>. Alors n’oubliez pas d’installer ctags sur votre distribution.

" Global settings
set nocompatible
syntax on
set hlsearch
set shiftwidth=2
set background=dark
set cursorline
inoremap <S-Tab> <C-V><Tab>

" Show line number
set number
highlight LineNr term=bold ctermfg=darkgray guifg=darkgray

" Special configuration for devel
filetype on
filetype plugin on
set ofu=syntaxcomplete#Complete
autocmd FileType c,cpp,cxx,h,fl,php set cindent|set cino=:0|set tabstop=8|set softtabstop=2|set expandtab
autocmd FileType make setlocal noexpandtab

" Special highlighting for Doxygen
let g:load_doxygen_syntax=1

" Show when a line exceeds 80 chars
au BufWinEnter * let w:m1=matchadd('ErrorMsg', '\%>80v.\+', -1)

" Highlight Tabs and Spaces
au BufWinEnter * let w:m2=matchadd('Tab', '\t', -1)
au BufWinEnter * let w:m3=matchadd('Space', '\s\+$\| \+\ze\t', -1)
set list listchars=tab:»·,trail:·
highlight Tab ctermbg=darkgray guibg=darkgray
highlight Space ctermbg=darkblue guibg=darkblue

" OmniCppComplete
let OmniCpp_NamespaceSearch = 1
let OmniCpp_GlobalScopeSearch = 1
let OmniCpp_ShowAccess = 1
let OmniCpp_ShowPrototypeInAbbr = 1
let OmniCpp_MayCompleteDot = 1
let OmniCpp_MayCompleteArrow = 1
let OmniCpp_MayCompleteScope = 1
let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

" CTags
map <C-F12> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR>
set tags=~/.vim/stdtags,tags,.tags,../tags
au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif
set completeopt=menuone,menu,longest,preview

Bien entendu ce .vimrc est de loin pas parfait, mais il remplit parfaitement mes besoins. En quelques mots, les dépassements du 80ème caractère s’affichent en rouge, les tabulations et les espaces en fin de ligne sont mis en évidence. Pour insérer une vraie tabulation alors il faut faire <SHIFT-TAB>

Un exemple avec libvalhalla que j’ai “salopé” exprès :o)

Vim - libvalhalla

A bientôt