.vimrc 6.63 KB
Newer Older
Lucas Serrano's avatar
Lucas Serrano committed
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.
Lucas Serrano's avatar
Lucas Serrano committed
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.

"------------------------------------------------------------------------------
Fardale's avatar
Fardale committed
11 12

"~" " Pour charger de la configuration avant la configuration crans
13
"~" source ~/.vimrc_before
Fardale's avatar
Fardale committed
14

Lucas Serrano's avatar
Lucas Serrano committed
15 16 17 18
" +-----------+
" | Affichage |
" +-----------+

19 20
" Affiche la commande en train d'être tapée en bas à droite de l'écran
set showcmd
Lucas Serrano's avatar
Lucas Serrano committed
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

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

31 32 33 34 35 36 37 38 39 40 41 42
"~" " 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

" Retire la marge à gauche sur les numéros de lignes
set numberwidth=2
Lucas Serrano's avatar
Lucas Serrano committed
43

Fardale's avatar
Fardale committed
44 45 46 47 48
"~" " Surligne la ligne du curseur
"~" set cursorline

"~" " Surligne la colonne du curseur
"~" set cursorcolumn
Lucas Serrano's avatar
Lucas Serrano committed
49 50 51 52 53 54

" +-----------------+
" | Édition de code |
" +-----------------+

" ~~ Coloration syntaxique ~~
Fardale's avatar
Fardale committed
55 56 57 58 59
" Active la coloration syntaxique pour le type de fichier détecté
if has("syntax")
  syntax on
endif

Fardale's avatar
Fardale committed
60
" ~~ Indentation et tabulation ~~
Fardale's avatar
Fardale committed
61 62 63 64
" Active les régles d'indentation pour le type de fichier détecté
if has("autocmd")
  filetype plugin indent on
endif
Lucas Serrano's avatar
Lucas Serrano committed
65

Fardale's avatar
Fardale committed
66 67
"~" " Conserve l'indentation de la ligne précédente lors d'un retour à la ligne
"~" set autoindent
68

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

72 73 74 75 76
"~" " Met les tabulations à 4 colonnes
"~" set tabstop=4

"~" " Indente à 4 colonnes pour les opérations de réindentation
"~" set shiftwidth=4
Fardale's avatar
Fardale committed
77
"~" set shiftwidth=4 " pour <<, >> et ==
78 79 80

"~" " Remplace les (futures) tabulations par des espaces
"~" set expandtab
Fardale's avatar
Fardale committed
81 82
"~" " On veut des tabulations dans les MakeFiles
"~" autocmd FileType make set noexpandtab tabstop=4 shiftwidth=2 nopi ci
Lucas Serrano's avatar
Lucas Serrano committed
83

Fardale's avatar
Fardale committed
84 85
"~" " Ctrl-p change entre le mode paste et nopaste
"~" set pastetoggle=<C-P>
Lucas Serrano's avatar
Lucas Serrano committed
86

87 88 89
"~" " Utilise le presse papier system (nécessite vim-gnome sous Debian)
"~" set clipboard^=unnamedplus

90
"~" "Les fichiers .ssh/config_* sont considérés comme des fichiers de
Fardale's avatar
Fardale committed
91 92
"~" "configuration pour ssh.
"~" au BufNewFile,BufRead */.ssh/config_*  setf sshconfig
93

Lucas Serrano's avatar
Lucas Serrano committed
94 95 96 97 98
" +---------------------------+
" | Recherche et substitution |
" +---------------------------+

" ~~ Recherche ~~
99 100 101 102 103 104
" Commence la recherche dès les premiers caractères tapés (comme sous less)
set incsearch

"~" " 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
Lucas Serrano's avatar
Lucas Serrano committed
105

Fardale's avatar
Fardale committed
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
"~" " Rend la recherche insensible aux majuscules et minuscules, sauf si le
"~" " motif contient une majuscule
"~" set ignorecase
"~" set smartcase

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

"~" " Enregistre automatiquement pour certaines commandes, notament make (voir :help autowrite)
"~" set autowrite

"~" " Met à jour automatiquement les fichiers modifiés hors de vim
"~" set autoread

"~" " 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é.
Fardale's avatar
Fardale committed
123
"~" set confirm
Lucas Serrano's avatar
Lucas Serrano committed
124 125 126 127 128

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

129 130
" Change la taille de l'historique des commandes (par défaut 20)
set history=50
Lucas Serrano's avatar
Lucas Serrano committed
131

132 133 134
"~" " 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
Lucas Serrano's avatar
Lucas Serrano committed
135

Fardale's avatar
Fardale committed
136 137 138 139 140 141 142
"~" " 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,<,>,[,]

Lucas Serrano's avatar
Lucas Serrano committed
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
" +------------------+
" | 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 ~~

"~" 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()

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

Fardale's avatar
Fardale committed
167 168 169
"~" " Surligne les espaces insécables
"~" au BufEnter * hi Nbsp ctermbg=233 guibg=black
"~" au BufEnter * match Nbsp /\%uA0/
Fardale's avatar
Fardale committed
170 171 172 173 174 175

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

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

Maxime Bombar's avatar
Maxime Bombar committed
178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209
" ## 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