Phil
<source lang="vim"> ""============================================================================ "" Fichier : .vimrc "" Auteur : Phil "" Licence : GNU GPL v3 - http://www.gnu.org/licenses/gpl.html "" Description : Fichier de configuration pour l editeur de texte Vim ""============================================================================ "" "" Sections : "" "" -> General "" -> Environnements "" -> Interface "" -> Aspect graphique "" -> Fichiers et sauvegardes "" -> Texte, tabulation, indentation et autres "" -> Recherche de texte "" -> Replis de texte "" -> Deplacement, onglets et buffers "" -> Barre d etat "" -> Outils et raccourcis "" -> Gestion des filetypes "" -> Langages, orthographe, abreviations et autocompletement "" -> Reglage des plugins installes "" ""============================================================================ "" "" Plugins : "" "" snipMate 0.83 "" http://www.vim.org/scripts/script.php?script_id=2540 "" Fichiers : "" after/plugin/snipMate.vim "" autoload/snipMate.vim "" doc/snipMate.txt "" ftplugin/html_snip_helper.vim "" plugin/snipMate.vim "" snippets/* "" syntax/snippet.vim "" "" VCSCommand 1.99.40 "" http://www.vim.org/scripts/script.php?script_id=90 "" Fichiers : "" doc/vcscommand.txt "" syntax/svnannotate.vim "" syntax/vcscommit.vim "" plugin/vcscommand.vim "" plugin/vcssvn.vim "" ""============================================================================
""============================================================================
"" -> General
""============================================================================
" Choix de la touche d introduction du mapping additionnel let mapleader=","
" Desactivation de la compatibilite complete avec VI set nocompatible
" Desactivation des versions locales des .(g)vimrc et .exrc set noexrc
if has("cmdline_hist")
" Augmentation de l historique (des commandes, de la recherche, etc.) set history=100
endif
" Activer les ftplugin apres reconnaissance du filetype du buffer filetype plugin on
" Activation par defaut du mode nopaste set nopaste
""============================================================================
"" -> Environnements
""============================================================================
" Configuration des repertoires utilises par :find, gf et autres " Le . represente le repertoire du fichier courant " Le vide entre deux virgules represente le repertoire actuel set path=.,,
if has("unix")
" Ajout du repertoire personnel dans le path set path+=$HOME/**
" Raccourci vers mon workspace nnoremap <Leader>w :cd $HOME/workspace<CR>
" Chargement et dechargement de sessions nmap <F2> :wall<Bar>:mksession! $HOME/session_vim<CR> nmap <F3> :source $HOME/session_vim<CR>
elseif has("win32")
" Raccourcis divers nnoremap <Leader>d :cd D:\data<CR> nnoremap <Leader>a :cd D:\data\archives<CR> nnoremap <Leader>w :cd D:\data\workspace<CR> nnoremap <Leader>tr :cd D:\data\workspace\encaissement_trunk\ nnoremap <Leader>es :cd D:\data\workspace\encaissement_es\ nnoremap <Leader>fr :cd D:\data\workspace\encaissement_fr\ nnoremap <Leader>gr :cd D:\data\workspace\encaissement_gr\ nnoremap <Leader>it :cd D:\data\workspace\encaissement_it\ nnoremap <Leader>pl :cd D:\data\workspace\encaissement_pl\ nnoremap <Leader>pt :cd D:\data\workspace\encaissement_pt\
" Chargement et dechargement de sessions nmap <F2> :wall<Bar>:mksession! D:\data\session_vim<CR> nmap <F3> :source D:\data\session_vim<CR>
if has("autocmd")
augroup travail
autocmd!
" On utilise EXEC SQL au travail, nos fichiers C sont donc souvent
" nommes *.sc
autocmd BufEnter *.sc setlocal filetype=c
" Nos scripts Shell sont nommes *.bat ce qui active le filetype
" dosbatch
autocmd BufEnter *.bat setlocal filetype=sh
augroup END
endif
endif
""============================================================================
"" -> Interface
""============================================================================
" Desactivation de la souris set mouse=
" Ne pas demarrer dans le mode insertion par defaut set noinsertmode
" Enlever le bip systeme en cas d erreur set noerrorbells
" Ne pas utiliser de flash pour les avertissements set novisualbell
" Redissiner la fenetre durant l execution les macros set nolazyredraw
" Nombre minimal de ligne(s) entre la ligne active et le bord de l ecran set scrolloff=1
" Nombre de colonnes entre la colonne active et le bord de l ecran set sidescrolloff=0
" Cacher les buffers sans les abandonner (et donc changer de buffer sans avoir " a sauvegarder) set hidden
" Nombre minimum de lignes impactees ou de substitutions necessaires avant " notification set report=0
" Ne pas afficher de boites de dialogues pour demander des confirmations set noconfirm
" Mise en evidence de la parenthese ou de l accolade correspondante a celle " sous le curseur set showmatch
" Temps durant lequel le showmatch sera actif set matchtime=3
" Le backspace peut supprimer l indentation, les retour de ligne ou plus qu il " n a ete insere depuis l entree en mode d insertion. set backspace=indent,eol,start
if has("autocmd")
" Ouvre le fichier au meme endroit que precedemment
autocmd BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$")
\| exe "normal! g'\"" | endif
endif
" Nombre maximum d onglets que peut ouvrir l option -p a l appel de vim set tabpagemax=10
" Comportement du diff (horizontal, gestion de la case, etc.) : je laisse par " defaut. set diffopt=filler
""============================================================================
"" -> Aspect graphique
""============================================================================
" Activation par defaut des numeros de ligne set number
" Choix du theme colorscheme slate2
if has("gui_running")
" Options graphiques de Vim d abord videes set guioptions= " On ajoute l option pour ne pas charger les menus de gVim set guioptions+=M " On demande des messages de style console au lieu des popups set guioptions+=c
" Reglage de la police d ecriture (a installer sur Windows)
if has("unix")
set guifont=DejaVu\ Sans\ Mono\ 9
elseif has("win32")
set guifont=DejaVu_Sans_Mono:h9
endif
endif
if has("syntax")
" Soulignement de la ligne courante pour mieux reperer la position " actuelle set cursorline " Par contre, pas de mise en valeur de la colonne set nocursorcolumn " Active le mode de reconnaissance syntaxique (et notamment la coloration) syntax on
endif
" La ligne des onglets ne s affiche que lorsqu au moins deux onglets sont " ouverts set showtabline=1
if has("linebreak")
" Largeur minimale de la marge des numeros de ligne (augmente " automatiquement) set numberwidth=1 " Retour de ligne sur les caraceteres de breakat plutot que n importe ou set linebreak " Caracteres autorisant le retour de ligne si linebreak est actif set breakat=\ ^I!@*-+;:,./? " Prefixe les lignes issues d un retour de ligne set showbreak=>
endif
" Hauteur de la ligne de commande set cmdheight=1
" Espacement des lignes (inactif en dehors de gVim) set linespace=0
""============================================================================
"" -> Fichiers et sauvegardes
""============================================================================
" Ne pas recharger automatiquement les fichiers s ils sont modifies a " l exterieur de Vim set noautoread
" Interdire l enregistrement automatique set noautowrite set noautowriteall
" Utilisation d un fichier swap pour chaque buffer set swapfile
if has('writebackup')
" On fait un backup pendant la sauvegarde du fichier set writebackup
endif
" On ne supprime pas le backup ensuite set backup " Extension automatique des fichiers de sauvegarde quand backup est actif set backupext=~ " Definition du repertoire d accueil des sauvegardes quand backup est actif if has("unix")
set backupdir=$HOME/.vim/backup
elseif has("win32")
set backupdir=$HOME/vimfiles/backup
endif
" Choix du format de fichier (fileformat existant conserve mais nouveau " fichier enregistre au format unix) set fileformats=unix,dos set fileformat=unix
if has("multi_byte")
" Encodage des caracteres a l ecran set encoding=utf-8
endif
" Annulation persistante if has("persistent_undo")
if has("unix")
set undodir=$HOME/.vim/undo
elseif has("win32")
set undodir=$HOME/vimfiles/undo
endif
set undofile
endif
" Chiffrement des fichiers if v:version >= 703
set cryptmethod=blowfish
endif
""============================================================================
"" -> Texte, tabulation, indentation et autres
""============================================================================
" J ai prefere utilise filetype indent on donc smartindent m est inutile filetype indent on if has("smartindent")
set nosmartindent
endif
" Taille des tabulations a l affichage (en nombre d espaces) set tabstop=4
" Taille des tabulations mixtes (tabulations et espaces) set softtabstop=4
" Taille des tabulations (en nombres d espaces) set shiftwidth=4
" Desactivation de smarttab pour utiliser tabstop et softtabstop a la place set nosmarttab
" Reproduit l indentation precedente a la creation d une ligne en mode " insertion set autoindent
" Remplace les tabulations par des espaces set expandtab
" Retour a la ligne actif set wrap
" Reglages des caracteres remplacant les caracteres invisibles pour l option " list set listchars=tab:▸\ ,nbsp:¤,precedes:<,extends:>,trail:·,eol:¬
" Option list activee par defaut pour affichier les caracteres de mise en page set list
set formatoptions=tcql " t - Retour a la ligne du texte sur la valeur de textwidth automatique. " c - Reprise du caractere de commentaire sur un retour de ligne. " q - Autorise la mise en page des commentaires avec gq. " l - Ne pas formatter les lignes deja plus longues que textwidth au moment de " l edition.
" Largeur maximale du texte en nombres d espaces (zero par defaut mais je " redefinis souvent a 78 selon les filetypes) set textwidth=78
if exists('+colorcolumn')
" Ne pas afficher le marqueur de largeur de ligne par defaut
set colorcolumn=
" Fonction pour (des)activer cette ligne repaire
nnoremap <silent> <F12> :call ToggleColorColumn()<CR>
function! ToggleColorColumn()
if &colorcolumn == '+1'
set colorcolumn=
else
set colorcolumn=+1
endif
endfunction
endif
""============================================================================
"" -> Recherche de texte
""============================================================================
if has("extra_search")
" On desactive la surbrillance des resultats set hlsearch
" On doit egalement pouvoir la desactiver de facon ponctuelle avec <C-l> nnoremap <silent> <C-l> :nohl<CR><C-l>
" Recherche deja pendant la saisie du masque de recherche set incsearch
endif
" Recherche non respectueuse de la casse set ignorecase
" Recherche respectueuse de la casse quand une majuscule est saisie set smartcase
" Map pour permettre une recherche dans l arborescence courante. map <Leader>g :vimgrep //j *<Left><Left><Left><Left>
" Mode magic pour les expressions regulieres set magic
" Activer par defaut le mode global pour les recherches set gdefault
""============================================================================
"" -> Replis de texte
""============================================================================
" Reglages des replis if has("folding")
" Activation des replis set foldenable
" Creation automatique des replis sur la syntaxe set foldmethod=manual
" Nombre de replis successifs maximum set foldnestmax=10
" Nombre de lignes minimum pour qu un replis soit ferme automatiquement set foldminlines=1
" Commandes pouvant ouvrir les replis set foldopen=block,hor,mark,percent,quickfix,search,tag,undo
" Definition des marqueurs utilises par foldmethod=marker
set foldmarker={{{,}}}
" Par defaut, a l ouverture d un buffer, les replis sont fermes. " Des ftplugins redefinissent ce comportement localement via le parametre " foldlevl. set foldlevelstart=-1
" Texte affiche sur le repli set foldtext=foldtext()
if has("windows")
" Aucun caractere de decoration pour completer les lignes de split et
" de fold
set fillchars=
endif
endif
""============================================================================
"" -> Deplacement, onglets et buffers
""============================================================================
" Deplacement vers le repertoire du fichier ouvert if has("modify_fname")
map <Leader>cd :cd <C-R>=expand("%:p:h")<CR><CR>
endif
" Ne pas se deplacer automatiquement vers le buffer courant if exists("+autochdir")
set noautochdir
endif
" Reglage du mode de recherche des buffers pour la commande :sb set switchbuf=usetab
" Ouvrir un fichier de la meme arborescence que le fichier actif if has("modify_fname")
if has ("unix")
noremap <Leader>e :edit <C-R>=expand("%:p:h")."/"<CR>
elseif has("win32")
noremap <Leader>e :edit <C-R>=expand("%:p:h")."\\"<CR>
endif
endif
""============================================================================ "" -> Barre d etat ""============================================================================
" Affiche la barre de status quoi qu il en soit (0 pour la masquer, 1 pour ne " l afficher que si l ecran est divise) set laststatus=2
if has("statusline")
" Le numero du buffer
set statusline=%n
" Un espace puis le chemin/nom du fichier ouvert
set statusline+=\ %f
" Le flag de modification du fichier (rien si non modifie, sinon [+])
set statusline+=%m
" Le flag de lecture seule du fichier (rien si non modifiable, sinon [RO])
set statusline+=%r
" Infos utiles [type,charset,format]
set statusline+=\ [%{strlen(&filetype)?&filetype:'aucun'},
\%{strlen(&fileencoding)?&fileencoding:&enc},
\%{&fileformat}]
" Position du curseur (ligne, colonne - colonne fictive)
set statusline+=%=%l,%c%V
" La position en pourcentage dans le fichier (pas en nombre de lignes mais
" au niveau de l affichage)
set statusline+=\ %P
" Configure le ruler (depend de +statusline et non de +cmdline_info) set rulerformat=%=%l,%c%V
" Affiche des informations sur la taille de la selection ou le debut d une " commande saisie mais pas encore complete set showcmd
endif
if has("cmdline_info")
" Affiche la position du curseur en bas a gauche de l ecran (inactif si la " statusline est presente) set ruler
endif
" Reglages de la selection des fichiers et commandes " Le wildchar <TAB> complete le plus possible et un eventuel autre wildchar " fera s afficher tour a tour le propositions possibles pour la selection d un " fichier ou d une commande. set wildmode=longest,full if has("wildmenu")
" Les hypotheses du completement s affichent dans le wildmenu. set wildmenu
endif if has("wildignore")
" Extensions que le wildmenu ignore
" Divers
set wildignore=*.gif,*.jpg,*.pdf,*.png
" Fichiers C
set wildignore+=*.a,*.o
" Fichiers d archives
set wildignore+=*.bz,*.gz,*.tar,*.tgz,*.zip
" Fichiers LaTeX
set wildignore+=*.aux,*.bbl,*.bib,*.idx,*.ind,*.ilg,*.lof,*.lot,
\*.out,*.toc
endif
" Vim va donner une priorite moindre aux fichiers ayant les extensions " suivantes lors du completement automatique ou de la recherche par wildcar. " Fichiers divers set suffixes=.bak,.log,~ " Fichiers C (je consulte plus rarement les headers que les sources) set suffixes+=.h
""============================================================================
"" -> Outils et raccourcis
""============================================================================
" Suppression du fichier courant et de son buffer (ainsi que des marques et " autres) map <Leader>rm :echo delete(@%) <Bar> bwipeout!<CR>
" Nettoyage des fichiers juste avant la sauvegarde map <Leader>nf :call NettoyerFichier()<CR> function! NettoyerFichier()
" Les caracteres blancs (tabulations et espaces) sont supprimes de la " ligne si elle ne contient que ca (la ligne ne disparait pas pour autant) " ou s il n y a aucun caractere ensuite sur la ligne. execute "%s/\\s\\+$//ce"
" J affiche la ligne de repere du textwidth pour faire penser a controler
" la longueur des lignes.
if exists('+colorcolumn')
set colorcolumn=+1
endif
endfunction
" Differences depuis le debut de l edition if !exists(":DiffOrig")
" La commande suivante permet de comparer le fichier avec son ancien etat " (au moment de l ouverture dans Vim). command DiffOrig vertical new | set buftype=nofile | r # | 0d_ | diffthis \| wincmd p | diffthis
endif
" Gestion des templates if has("autocmd")
augroup templates
autocmd!
autocmd BufNewFile *.html,*.htm call Template('html')
autocmd BufNewFile *.py call Template('py')
autocmd BufNewFile *.sh,*.bat call Template('sh')
autocmd BufNewFile *.c,*.cpp,*.sc,*.h call Template('c')
autocmd BufNewFile *.spr call Template('spr')
augroup END
function! Template(type)
if has("unix")
execute "0r $HOME/.vim/templates/skeleton.".a:type
elseif has("win32")
execute "0r $HOME/vimfiles/templates/skeleton.".a:type
endif
execute "%s/!!FICHIER!!/".expand("%:t")."/ge"
execute "%s/!!DATE!!/".strftime("%d-%m-%Y")."/ge"
execute "normal! G"
endfunction
endif
""============================================================================
"" -> Gestion des filetypes
""============================================================================
if has("autocmd")
" --> Reglages pour les fichiers c
augroup c
autocmd!
if has("folding")
" Replis sur les marques
autocmd FileType c setlocal foldmethod=syntax
" Ouvrir tous les replis au chargement du buffer
autocmd FileType c setlocal foldlevel=99
endif
if has("win32")
autocmd FileType c setlocal textwidth=0
autocmd FileType c setlocal noexpandtab
endif
augroup END
" --> Reglages pour les fichiers gtd
augroup gtd
autocmd!
autocmd BufRead,BufNewFile *.gtd set filetype=gtd
" Ajout d un type de liste (qui sera donc indente correctement,
" notamment après un retour à la ligne) pour les items urgents.
if has("comments")
autocmd FileType gtd setlocal comments+=fb:+
endif
" Si Vim a ete compile avec les options liees aux replis
if has("folding")
" Action de la methode sur l indention
autocmd FileType gtd setlocal foldmethod=indent
" Ne rien replier par defaut
autocmd FileType gtd setlocal foldlevel=99
endif
augroup END
" --> Reglages pour les fichiers spr
augroup spr
autocmd!
autocmd BufRead,BufNewFile *.spr set filetype=spr
" Dans mon templates SPR, je cree des replis avec des marques.
if has("folding")
autocmd FileType spr setlocal foldmethod=marker
endif
augroup END
" --> Reglages pour les fichiers tex
augroup tex
autocmd!
" Le filetype par defaut des fichiers tex est plaintex et mes snippets
" n y sont pas fonctionnels...
autocmd FileType plaintex setlocal filetype=tex
if has("folding")
" Mes snippets LaTeX comptent sur les replis marker.
autocmd FileType tex setlocal foldmethod=marker
endif
augroup END
endif
""============================================================================ "" -> Langages, orthographe, abreviations et autocompletement ""============================================================================
" Choix de la langue de l aide set helplang=fr
if has("syntax")
" Le francais est ma langue par defaut pour la correction. J ecris tout de " meme en anglais de temps en temps. set spelllang=fr,en
" La commande z= affiche des suggestions, je n en veux que 10 pour ne pas " surcharger l ecran. set spellsuggest=10
" Desactivation par defaut de la correction orthographique set nospell
endif
" Options liees a l autocompletement CTRL-N et CTRL-P set complete=.,w,b,u,t,i
iabbrev cad c'est-à-dire iabbrev svp s'il-vous-plaît iabbrev stp s'il-te-plaît iabbrev pcq parce que
""============================================================================ "" -> Reglage des plugins installes ""============================================================================
if has("win32")
" Sur un poste Windows, il faut specifier quel binaire utiliser pour " piloter SVN depuis VCSCommand. let VCSCommandCVSExec="C:/Program files/SlikSvn/bin/svn.exe"
endif
" Parametrage des buffers crees par VCSCommand if has("autocmd")
augroup vcscommand
autocmd!
" Certains buffers ne devraient pas etre listes par :ls.
autocmd FileType svnupdate setlocal nobuflisted
" Certains buffers sont tres grands mais n affichent pas grand chose.
autocmd FileType svnupdate resize 10 " Affiche le rapport d'update
autocmd FileType svncommit resize 10 " Affiche le rapport de commit
autocmd FileType vcscommit resize 10 " Buffer de message de commit
" Je n aime pas les retours a la ligne dans les messages de commit.
autocmd FileType vcscommit setlocal textwidth=0
augroup END
endif </source>