.vimrc 7.43 KB
Newer Older
1 2
" .vimrc générique mis à votre disposition
" par les gentils membres actifs du Cr@ns
Vincent Le gallic's avatar
Vincent Le gallic committed
3
" Vous pouvez l'utiliser, le redistribuer, le modifier à votre convenance.
4 5 6 7 8 9 10
" Des questions, des suggestions : {nounou,ca}@lists.crans.org
" Licence : WTFPL

" Les sections commentées par "~" sont des features qui ne sont pas activées
" par défaut. Sentez-vous libre de les décommenter pour les utiliser.

"------------------------------------------------------------------------------
11 12

"~" " Pour charger de la configuration avant la configuration crans
13
"~" source ~/.vimrc_before
14

15 16 17 18
" +-----------+
" | Affichage |
" +-----------+

19 20
" Affiche la commande en train d'être tapée en bas à droite de l'écran
set showcmd
21

22 23 24 25 26 27
" Affiche le nom du fichier et le chemin dans le titre du terminal
set title

"~" " N'affiche pas sur plusieurs lignes les lignes qui sont plus grandes que la fenêtre (comme sous nano)
"~" set nowrap

Boudy's avatar
Boudy committed
28 29
" Montre brièvement la paire de parenthèse lors de sa fermeture
set showmatch
Fardale's avatar
Fardale committed
30

31 32 33 34 35 36 37 38 39
"~" " Optimise la coloration de vim pour l'adapter à un terminal sombre (par défaut 'light')
"~" set background=dark

" ~~ Numérotation ~~
" Affiche 'ligne,n de caractère,colonne' en bas à droite du terminal
set ruler

" Affiche les numéros de lignes à gauche du terminal
set number
Boudy's avatar
Boudy committed
40
set relativenumber
41 42 43

" Retire la marge à gauche sur les numéros de lignes
set numberwidth=2
44

45 46 47 48 49
"~" " Surligne la ligne du curseur
"~" set cursorline

"~" " Surligne la colonne du curseur
"~" set cursorcolumn
50

Boudy's avatar
Boudy committed
51 52 53
" Maintient la ligne courante au milieu du terminal
set scrolloff=999

54 55 56 57 58
" +-----------------+
" | Édition de code |
" +-----------------+

" ~~ Coloration syntaxique ~~
Fardale's avatar
Fardale committed
59 60 61 62 63
" Active la coloration syntaxique pour le type de fichier détecté
if has("syntax")
  syntax on
endif

Boudy's avatar
Boudy committed
64 65 66 67 68 69
" 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

70
" ~~ Indentation et tabulation ~~
Fardale's avatar
Fardale committed
71 72 73 74
" Active les régles d'indentation pour le type de fichier détecté
if has("autocmd")
  filetype plugin indent on
endif
75

Boudy's avatar
Boudy committed
76 77 78 79 80
" Conserve l'indentation de la ligne précédente lors d'un retour à la ligne
set autoindent

" Met les tabulations à 2 colonnes
set tabstop=2
81

Boudy's avatar
Boudy committed
82 83
" Indente à 2 colonnes pour les opérations de réindentation
set shiftwidth=2
84

Fardale's avatar
Fardale committed
85 86 87
"~" " Ne suprime pas l'indentation faite par 'autoindent' si la ligne est laissé vide
"~" set cpoptions+=I

Boudy's avatar
Boudy committed
88 89
" Remplace les (futures) tabulations par des espaces
set expandtab
90

Boudy's avatar
Boudy committed
91 92
" On veut des tabulations dans les MakeFiles
autocmd FileType make set noexpandtab tabstop=4 shiftwidth=2 nopi ci
93

94 95
"~" " Ctrl-p change entre le mode paste et nopaste
"~" set pastetoggle=<C-P>
96

Boudy's avatar
Boudy committed
97 98
" Utilise le presse papier system (nécessite vim-gnome sous Debian)
set clipboard^=unnamedplus
99

100
"~" "Les fichiers .ssh/config_* sont considérés comme des fichiers de
Fardale's avatar
Fardale committed
101 102
"~" "configuration pour ssh.
"~" au BufNewFile,BufRead */.ssh/config_*  setf sshconfig
103

104 105 106 107 108
" +---------------------------+
" | Recherche et substitution |
" +---------------------------+

" ~~ Recherche ~~
109 110 111
" Commence la recherche dès les premiers caractères tapés (comme sous less)
set incsearch

Boudy's avatar
Boudy committed
112 113 114
" Surligne les correspondances dans les recherches
" (Exécuter nohl pour désactiver les hl (ils restent même une fois la recherche terminée))
set hlsearch
115

Fardale's avatar
Fardale committed
116 117 118
"~" " Rend la recherche insensible aux majuscules et minuscules, sauf si le
"~" " motif contient une majuscule
"~" set ignorecase
Boudy's avatar
Boudy committed
119
set smartcase
Fardale's avatar
Fardale committed
120 121 122 123 124

" +-----------------------------+
" | Enregistrement et fermeture |
" +-----------------------------+

Boudy's avatar
Boudy committed
125 126
" Enregistre automatiquement pour certaines commandes, notament make (voir :help autowrite)
set autowrite
Fardale's avatar
Fardale committed
127

Boudy's avatar
Boudy committed
128 129
" Met à jour automatiquement les fichiers modifiés hors de vim
set autoread
Fardale's avatar
Fardale committed
130 131 132

"~" " Pose la question au lieu d'échouer lors de la fermeture quand il y des
"~" " modifications non sauvées et que ! n'est pas précisé.
133
"~" set confirm
134 135 136 137 138

" +--------+
" | Divers |
" +--------+

139 140
" Change la taille de l'historique des commandes (par défaut 20)
set history=50
141

Boudy's avatar
Boudy committed
142 143 144
" Change le comportement de la TAB-complétion : on complète au plus long
" au premier appui, on affiche la liste des possibilités au deuxième
set wildmode=longest,list
145

Fardale's avatar
Fardale committed
146 147 148 149 150 151 152
"~" " Active l'utilisation de la souris. (Ne marche qu'avec certains terminaux voir :help mouse)
"~" set mouse=a

"~" " Permet aux flèches droites et gauches de déplacer le curseur au début de
"~" " de la prochaine ligne ou à la fin de la précédente ligne
"~" set whichwrap=b,s,<,>,[,]

153 154 155 156 157 158 159 160
" +------------------+
" | Hacks et scripts |
" +------------------+

" ~~ Hack pour mettre en rouges les espaces indésirables en fin de ligne. ~~
" ~~ Ne gêne pas la vue en mode édition. ~~
" ~~ Adapté de http://vim.wikia.com/wiki/Highlight_unwanted_spaces ~~

Boudy's avatar
Boudy committed
161 162 163 164 165 166
highlight EspaceFinLigne ctermbg=red guibg=red
match EspaceFinLigne /\s\+$/
autocmd BufWinEnter * match EspaceFinLigne /\s\+$/
autocmd InsertEnter * match EspaceFinLigne /\s\+\%#\@<!$/
autocmd InsertLeave * match EspaceFinLigne /\s\+$/
autocmd BufWinLeave * call clearmatches()
167 168 169 170 171 172 173 174 175 176

" ~~ Coloration du fond après n colonnes ~~
" ~~ /!\ Seulement pour vim 7.3 et plus /!\ ~~
" ~~ Adapté de http://blog.hanschen.org ~~

"~" highlight ColorColumn ctermbg=DarkGrey guibg=DarkGrey
"~" if exists('+colorcolumn')
"~"     execute "set colorcolumn=".join(range(81,335), ',')
"~" endif

Boudy's avatar
Boudy committed
177
" Surligne les espaces insécables (2 premieres ligne ne marchent pas)
Boudy's avatar
Boudy committed
178 179
"au BufEnter * hi Nbsp ctermbg=233 guibg=black
"au BufEnter * match Nbsp /\%uA0/
Boudy's avatar
Boudy committed
180
au VimEnter,BufWinEnter * syn match ErrorMsg " "
Boudy's avatar
Boudy committed
181 182 183 184 185 186

command Nonum set norelativenumber & nonumber

if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif
Boudy's avatar
Boudy committed
187 188


Boudy's avatar
Boudy committed
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
" ## added by OPAM user-setup for vim / base ## 93ee63e278bdfc07d1139a748ed3fff2 ## you can edit, but keep this line
let s:opam_share_dir = system("opam config var share")
let s:opam_share_dir = substitute(s:opam_share_dir, '[\r\n]*$', '', '')

let s:opam_configuration = {}

function! OpamConfOcpIndent()
  execute "set rtp^=" . s:opam_share_dir . "/ocp-indent/vim"
endfunction
let s:opam_configuration['ocp-indent'] = function('OpamConfOcpIndent')

function! OpamConfOcpIndex()
  execute "set rtp+=" . s:opam_share_dir . "/ocp-index/vim"
endfunction
let s:opam_configuration['ocp-index'] = function('OpamConfOcpIndex')

function! OpamConfMerlin()
  let l:dir = s:opam_share_dir . "/merlin/vim"
  execute "set rtp+=" . l:dir
endfunction
let s:opam_configuration['merlin'] = function('OpamConfMerlin')

let s:opam_packages = ["ocp-indent", "ocp-index", "merlin"]
let s:opam_check_cmdline = ["opam list --installed --short --safe --color=never"] + s:opam_packages
let s:opam_available_tools = split(system(join(s:opam_check_cmdline)))
for tool in s:opam_packages
  " Respect package order (merlin should be after ocp-index)
  if count(s:opam_available_tools, tool) > 0
    call s:opam_configuration[tool]()
  endif
endfor
" ## end of OPAM user-setup addition for vim / base ## keep this line
Boudy's avatar
Boudy committed
221 222 223


" Gestion des commentaires
224 225
command-range OcamlVisualComment silent '<,'>s/^/(* / | '<,'>s/$/ *)/ | nohl
command OcamlComment s/^/(* / | s/$/ *)/ | nohl
226 227
au FileType ocaml vmap ; :OcamlVisualComment <CR>
au FileType ocaml nmap ; :OcamlComment <CR>
228 229 230 231
command-range OcamlVisualDecomment silent '<,'>s/^(\* // | '<,'>s/ \*)$// | nohl
command OcamlDecomment s/^(\* // | s/ \*)$// | nohl
au FileType ocaml vmap , :OcamlVisualDecomment <CR>
au FileType ocaml nmap , :OcamlDecomment <CR>
232

233 234 235 236 237 238

" +-------+
" | Perso |
" +-------+

"~" " Pour charger de la configuration après la configuration crans
239
"~" source ~/.vimrc_after