diff options
author | Audric Schiltknecht <storm@chemicalstorm.org> | 2013-01-23 21:22:24 +0100 |
---|---|---|
committer | Audric Schiltknecht <storm@chemicalstorm.org> | 2013-01-23 21:25:41 +0100 |
commit | 92ae62f4db11ccbfc41bc9f24fe3859aef456f34 (patch) | |
tree | bee855c2f6fc3bb2d2206af07a1403ace7819e6d /vim/vimrc | |
parent | 6a3133baeba19c8e04d876e2bacbb42728a58c34 (diff) | |
download | dotfiles-92ae62f4db11ccbfc41bc9f24fe3859aef456f34.tar.gz dotfiles-92ae62f4db11ccbfc41bc9f24fe3859aef456f34.tar.bz2 dotfiles-92ae62f4db11ccbfc41bc9f24fe3859aef456f34.zip |
Little clean-up
Easier (I think...) directory layout
Diffstat (limited to 'vim/vimrc')
-rw-r--r-- | vim/vimrc | 374 |
1 files changed, 374 insertions, 0 deletions
diff --git a/vim/vimrc b/vim/vimrc new file mode 100644 index 0000000..36f9b6b --- /dev/null +++ b/vim/vimrc @@ -0,0 +1,374 @@ +"" Fichier de configuration perso de VIM + +""""""""""""" +" Pathogen - Charge les plugins dans .vim/bundle +" Doit etre fait AVANT filetype plugin indent on +""""""""""""" +call pathogen#infect() + +""""""""""""" +" Configuration générale +""""""""""""" + +" Enlève la compatibilité avec le "vieux vi" +set nocompatible + +" Affiche la commande que vous êtes en train de taper, le mode en cours, et +" votre position dans le texte +set showcmd +set showmode +set ruler + +" Une petite fenêtre pour voir les complétions possibles +set wildmenu + +"" Indentation +"Auto-indentation +"set autoindent +" Indentation à la C +"set cindent +" Indentation intelligente +set smartindent + +" Copie l'indentation lors d'une nouvelle ligne +set copyindent + +" Le terminal a un fond foncé +set background=dark + +" Coloration syntaxique +syntax on + +" Détection automatique du type de fichier & activation des plugins/indentations +filetype plugin on + +" Animation lors de la fermeture des parenthèses +set showmatch + +" Retour à la ligne auto au bout de 80 lignes +set textwidth=80 + +" Utilisation de ack a la place de grep +set grepprg=ack\ -a + +" Utilisation de la souris +set mouse=a +set nopaste + +""""""""""""" +" Options d'affichage +""""""""""""" + +" Surligne la ligne courante +"set cursorline +"highlight CursorLine term=reverse cterm=reverse + +" Taille des tabs +set shiftwidth=4 +set softtabstop=4 +set tabstop=4 + +" Affiche les numéros des lignes +"set number +highlight LineNr ctermbg=black ctermfg=gray + +" Personnalisation de la barre de status +set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [Line=%04l]\ [Col=%04v]\ [%p%%] +set laststatus=2 + +" Amélioration de la lisibilité des noms des onglets +highlight TabLine term=none cterm=none +highlight TabLineSel ctermbg=darkblue + +" On ouvre le fichier avec le curseur à la position de la dernière édition +autocmd BufReadPost * silent! call s:CursorOldPosition() + +" Activation de la gestion des ouvertures/fermetures de code +set foldenable +" Affichage de "=" sur les pliages +set fillchars=fold:= +" Définition de la fonction perso d'affichage du pliage +set foldtext=MyFoldFunction() + +""""""""""""" +" Dictionnaire +""""""""""""" + +"setlocal spell spelllang=fr +set spellfile=~/.vim/spellfile.utf-8.add + +""""""""" +" Recherche +"""""""""" + +" Recherche insensible à la casse lorsque qu'auncune majuscule n'est utilisée. +" Les deux options suivantes sont nécéssaires. +set ignorecase +set smartcase +" Recherche incrémentielle +set incsearch + +" Colore les recherches en cours +set hlsearch + +"""""""""" +" Programmation +"""""""""" +set tags+=~/.vim/ctags/c +set tags+=~/.vim/ctags/c++ + +"""""""""" +" Cscope plugin : +"""""""""" + +" This tests to see if vim was configured with the '--enable-cscope' option +" when it was compiled. If it wasn't, time to recompile vim... +if has("cscope") + + """"""""""""" Standard cscope/vim boilerplate + + " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t' + set cscopetag + + " check cscope for definition of a symbol before checking ctags: set to 1 + " if you want the reverse search order. + set csto=0 + + " add any cscope database in current directory + if filereadable("cscope.out") + cs add cscope.out + " else add the database pointed to by environment variable + elseif $CSCOPE_DB != "" + cs add $CSCOPE_DB + endif + + " do NOT show msg when any other cscope db added - annoying as hell + set nocscopeverbose + + + """"""""""""" My cscope/vim key mappings + " + " The following maps all invoke one of the following cscope search types: + " + " 's' symbol: find all references to the token under cursor + " 'g' global: find global definition(s) of the token under cursor + " 'c' calls: find all calls to the function name under cursor + " 't' text: find all instances of the text under cursor + " 'e' egrep: egrep search for the word under cursor + " 'f' file: open the filename under cursor + " 'i' includes: find files that include the filename under cursor + " 'd' called: find functions that function under cursor calls + " + " Below are three sets of the maps: one set that just jumps to your + " search result, one that splits the existing vim window horizontally and + " diplays your search result in the new window, and one that does the same + " thing, but does a vertical split instead (vim 6 only). + " + " I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's + " unlikely that you need their default mappings (CTRL-\'s default use is + " as part of CTRL-\ CTRL-N typemap, which basically just does the same + " thing as hitting 'escape': CTRL-@ doesn't seem to have any default use). + " If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all + " of these maps to use other keys. One likely candidate is 'CTRL-_' + " (which also maps to CTRL-/, which is easier to type). By default it is + " used to switch between Hebrew and English keyboard mode. + " + " All of the maps involving the <cfile> macro use '^<cfile>$': this is so + " that searches over '#include <time.h>" return only references to + " 'time.h', and not 'sys/time.h', etc. (by default cscope will return all + " files that contain 'time.h' as part of their name). + + + " To do the first type of search, hit 'CTRL-\', followed by one of the + " cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope + " search will be displayed in the current window. You can use CTRL-T to + " go back to where you were before the search. + " + + nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR> + nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR> + nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR> + nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR> + nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR> + nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR> + + + " Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type + " makes the vim window split horizontally, with search result displayed in + " the new window. + " + " (Note: earlier versions of vim may not have the :scs command, but it + " can be simulated roughly via: + " nmap <C-@>s <C-W><C-S> :cs find s <C-R>=expand("<cword>")<CR><CR> + + nmap <C-@><C-@>ss :scs find s <C-R>=expand("<cword>")<CR><CR> + nmap <C-@><C-@>sd :scs find g <C-R>=expand("<cword>")<CR><CR> + nmap <C-@><C-@>sc :scs find c <C-R>=expand("<cword>")<CR><CR> + nmap <C-@><C-@>st :scs find t <C-R>=expand("<cword>")<CR><CR> + nmap <C-@><C-@>sf :scs find f <C-R>=expand("<cfile>")<CR><CR> + nmap <C-@><C-@>si :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR> + + + """"""""""""" key map timeouts + " + " By default Vim will only wait 1 second for each keystroke in a mapping. + " You may find that too short with the above typemaps. If so, you should + " either turn off mapping timeouts via 'notimeout'. + " + "set notimeout + " + " Or, you can keep timeouts, by uncommenting the timeoutlen line below, + " with your own personal favorite value (in milliseconds): + " + "set timeoutlen=4000 + " + " Either way, since mapping timeout settings by default also set the + " timeouts for multicharacter 'keys codes' (like <F1>), you should also + " set ttimeout and ttimeoutlen: otherwise, you will experience strange + " delays as vim waits for a keystroke after you hit ESC (it will be + " waiting to see if the ESC is actually part of a key code like <F1>). + " + "set ttimeout + " + " personally, I find a tenth of a second to work well for key code + " timeouts. If you experience problems and have a slow terminal or network + " connection, set it higher. If you don't set ttimeoutlen, the value for + " timeoutlent (default: 1000 = 1 second, which is sluggish) is used. + " + "set ttimeoutlen=100 + +endif + +"""""""""" +" Fonctions d'affichage tirées de GLMF +"""""""""" + +" Affichage en inverse couleur +function! s:DisplayStatus(msg) + echohl Todo + echo a:msg + echohl None +endfunction + +"" Fonctions de gestion de la souris +"Enregistrement de l'état de la gestion de la souris +let s:mouseActivate = 1 +"Fonction permettant l'activation/désactivation de la gestion de la souris +function! ToggleMouseActivate() + if (s:mouseActivate) + let s:mouseActivate = 0 + set mouse=n + set paste + call s:DisplayStatus('Désactivation de la gestion de la souris (mode collage)') + else + let s:mouseActivate = 1 + set mouse=a + set nopaste + call s:DisplayStatus('Activation de la gestion de la souris (mode normal)') + endif +endfunction + +"" Fonction de "nettoyage" d'un fichier : +" - Suppression des ^M en fin de ligne +" - Encodage UTF-8 +function! ClearCode() + set fileformat=unix + set fileencoding=utf-8 + call s:DisplayStatus('Code nettoyé') +endfunction + +"" Déplacement de l'onglet courant vers la g ou la d +function! MoveTab(direction) + if (a:direction == 'left') + let tabNum = tabpagenr()-2 + if(tabNum < 0) + let tabNum = 0 + endif + execute 'tabm' . tabNum + else + let tabNum = tabpagenr() + execute 'tabm' . tabNum + endif +endfunction + +"" Ouverture des fichiers avec le curseur à la position de la dernière édition +function! s:CursorOldPosition() + if line("'\"") > 0 && line("'\"") <= line("$") + exe "normal g`\"" + end if +endfunction + +"" Affichage personnalisé des replis de code +function! MyFoldFunction() + let line = getline(v:foldstart) + let sub = substitute(line, '/\*\|\*/\|^\s+', '', 'g') + let lines = v:foldend - v:foldstart + 1 + return '[+] ' . v:folddashes.sub . '...' . lines . 'lignes...' . + getline(v:foldend) +endfunction + + +" Activation des templates lors de la création d'un nouveau fichier, et +" chargement des abbreviations et des commandes Vim spécifiques +function! LoadTemplate(extension, type) + if (a:type == 'all') + silent! execute '0r ' . $HOME . '/.vim/templates/' . a:extension . '.tpl' + silent! execute 'source ' . $HOME . '/.vim/templates/autocompletion.vim' + endif + " Insertion des abbreviations + silent! execute 'source ' . $HOME . '/.vim/abbreviations/' . a:extension . '.abb.vim' + " Insertion du dictionnaire + set dictionary+=$HOME . '/.vim/dictionary/' . a:extension . '.dict' + " Insertion des commandes spécifiques Vim + silent! execute 'source ' . $HOME . '/.vim/specific/' . a:extension . '.vim' +endfunction + +" Activation des templates et des chargements spécifiques en fonction de +" l'extenion du fichier chargé +autocmd BufNewFile * silent! call LoadTemplate('%:e', 'all') +autocmd BufRead * silent! call LoadTemplate('%:e', 'noTemplate') + +" Surlignement des champs à remplir dans les templates +3match Todo /<+.\++>/ + +"" Aide mémoire +" Variable indiquant l'état de l'affichage de l'aide +let helpDisplay = 0 +" Affiche/Masque l'aide +function! HelpMemory() + if g:helpDisplay == 0 + silent! topleft vertical 40split +buffer helpMemory + let g:helpDisplay = 1 + set buftype=nofile + 0read $HOME/.vim/memory.txt + highlight Memory ctermfg=white ctermbg=blue + "3match Memory /^.\+\ \+:/ + 3match Memory /<.\+>/ + else + bdelete helpMemory + let g:helpDisplay = 0 + endif +endfunction + +" Affiche/Masque les caracteres +function! DisplayChar() + set list! lcs=tab:\|_,eol:¶,nbsp:~ +endfunction + +" Surligne les lignes trop longues +" Variable indiquant l'état +let hlTooLarge = 0 +function! HlTooLarge() + if g:hlTooLarge == 0 + let g:hlTooLarge = 1 + highlight OverLength ctermbg=red ctermfg=white guibg=#592929 + match OverLength /\%81v.\+/ + else + match + let g:hlTooLarge = 0 + endif +endfunction + + +" Lecture des raccourcis claviers généraux +source $HOME/.vim/shortkeys.vim |