Phil

De Vim-fr.

<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>