-
Notifications
You must be signed in to change notification settings - Fork 0
/
.vimrc
360 lines (267 loc) · 12 KB
/
.vimrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
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
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
""""""""""""""""""""""""""""""""""""""""""""""""""
" Fichier .vimrc
" Créé le 11 mai 2006
" Nicolas Gressier ([email protected])
" Mise à jour : 18/06/2013 (par Aurélien LEQUOY)
" Version 3.0
""""""""""""""""""""""""""""""""""""""""""""""""""
syntax on
""""""""""""""""""""""""""""""""""""""""""""""""""
"Diverses options
""""""""""""""""""""""""""""""""""""""""""""""""""
set nocompatible " désactivation de la compatibilité avec vi
set background=dark " fond sombre
colorscheme desert " couleur
syntax enable " activation de la coloration syntaxique
set number " numérotation des lignes
set autoindent " indentation automatique avancée
set smartindent " indentation plus intelligente
set laststatus=2 " ajoute une barre de status
set backspace=indent,eol,start " autorisation du retour arrière
set history=50 " historique de 50 commandes
set ruler " affiche la position courante au sein du fichier
set showcmd " affiche la commande en cours
set shiftwidth=4 " nombre de tabulation pour l'indentation
set tabstop=4 " nombre d'espace pour une tabulation
set showmatch " vérification présence ([ ou { à la frappe de )] ou }
filetype plugin indent on " détection automatique du type de fichier
autocmd FileType text setlocal textwidth=72 " les fichiers de type .txt sont limites à 72 caractères par ligne
set fileformats=unix,mac,dos " gestion des retours chariot en fonction du type de fichier
set viewdir=/home/ngressier/.vim/saveview/ " répertoire pour sauvegarder les vues, utiles pour les replis manuels
set foldcolumn=2 " repère visuel pour les folds
let Tlist_Ctags_Cmd = '/usr/bin/ctags' " implémentation de ctags, nécessaire pour le plugin 'taglist'
set incsearch " recherche incrémentale
set hlsearch " surligne les résultats de la recherche
set ignorecase " ne pas prendre en compte la casse pour les recherches
set nolist " on n'affiche pas les caractères non imprimables
set listchars=eol:¶,tab:..,trail:~ " paramétrage des caractères non imprimables au cas où l'on souhaiterait les afficher
""""""""""""""""""""""""""""""""""""""""""""""""""
"tester le code PHP contre les erreurs de syntaxe
""""""""""""""""""""""""""""""""""""""""""""""""""
map <F5> :!php -l %<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""
"Mapping pour désactiver le surlignage des
"résultats d'une recherche
""""""""""""""""""""""""""""""""""""""""""""""""""
nnoremap <silent> <C-N> :noh<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""
"Mapping pour naviguer dans les lignes coupées
""""""""""""""""""""""""""""""""""""""""""""""""""
map <A-DOWN> gj
map <A-UP> gk
imap <A-UP> <ESC>gki
imap <A-DOWN> <ESC>gkj
""""""""""""""""""""""""""""""""""""""""""""""""""
"Repositionner le curseur à l'emplacement de la
"dernière édition
""""""""""""""""""""""""""""""""""""""""""""""""""
set viminfo='10,\"100,:20,%,n~/.viminfo
au BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
""""""""""""""""""""""""""""""""""""""""""""""""""
"Chargement des types de fichiers
""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd BufEnter *.txt set filetype=text " chargement du type de fichier pour le format txt
""""""""""""""""""""""""""""""""""""""""""""""""""
"Omni-completion par CTRL-X_CTRL-O
""""""""""""""""""""""""""""""""""""""""""""""""""
au filetype html set omnifunc=htmlcomplete#CompleteTags
au filetype css set omnifunc=csscomplete#CompleteCSS
au filetype javascript set omnifunc=javascriptcomplete#CompleteJS
au filetype c set omnifunc=ccomplete#Complete
au filetype php set omnifunc=phpcomplete#CompletePHP
au filetype prn set omnifunc=phpcomplete#CompletePHP
au filetype ruby set omnifunc=rubycomplete#Complete
au filetype sql set omnifunc=sqlcomplete#Complete
au filetype python set omnifunc=pythoncomplete#Complete
au filetype xml set omnifunc=xmlcomplete#CompleteTags
""""""""""""""""""""""""""""""""""""""""""""""""""
"Personnalisation de la barre de statut
""""""""""""""""""""""""""""""""""""""""""""""""""
set statusline=%t%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [FENC=%{&fileencoding}]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v]\ [%p%%]\ [LEN=%L]\ [TAG=%{Tlist_Get_Tagname_By_Line()}]
""""""""""""""""""""""""""""""""""""""""""""""""""
"Mapping pour l'activation de l'explorateur
"système
""""""""""""""""""""""""""""""""""""""""""""""""""
nnoremap <silent> <F9> :NERDTree /home/ngressier/<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""
"Mapping et configuration pour la liste des tags
""""""""""""""""""""""""""""""""""""""""""""""""""
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_Exit_OnlyWindow = 1 " vim se ferme si il reste uniquement la fenêtre des tags
let Tlist_Process_File_Always = 1 " activation permanente du plugin pour la barre de statut
let Tlist_Use_Right_Window = 1 " affiche les tags sur le côté droit de l'écran
""""""""""""""""""""""""""""""""""""""""""""""""""
"Sauvegarde automatique des vues, utiles pour les
"replis manuels
""""""""""""""""""""""""""""""""""""""""""""""""""
au BufWinLeave *.* mkview
au BufWinEnter *.* silent loadview
""""""""""""""""""""""""""""""""""""""""""""""""""
"Map pour se déplacer dans les onglets
""""""""""""""""""""""""""""""""""""""""""""""""""
map <tab> gt
""""""""""""""""""""""""""""""""""""""""""""""""""
"Mapping pour insérer la date du jour
""""""""""""""""""""""""""""""""""""""""""""""""""
imap \date <C-R>=strftime("%d/%m/%Y")<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""
"Mapping pour copier, couper, coller
"et sélectionner
""""""""""""""""""""""""""""""""""""""""""""""""""
map <C-x> "+x
map <C-c> "+y
map <C-p> "+gP
map <C-a> ggVG
""""""""""""""""""""""""""""""""""""""""""""""""""
"Dictionnaire français
"Liste des propositions par CTRL-X_CTRL-K
""""""""""""""""""""""""""""""""""""""""""""""""""
set dictionary+=/usr/share/dict/french
""""""""""""""""""""""""""""""""""""""""""""""""""
"Correction orthographique
"Liste des propositions par CTRL-X_s
""""""""""""""""""""""""""""""""""""""""""""""""""
set spellsuggest=5 " on affiche uniquement les 5 premières propositions
autocmd BufEnter *.txt set spell " correction orthographique dans les fichiers textes
autocmd BufEnter *.txt set spelllang=fr " correction orthographique dans les fichiers textes
""""""""""""""""""""""""""""""""""""""""""""""""""
"Infos-Bulles
""""""""""""""""""""""""""""""""""""""""""""""""""
"function! FoldSpellBalloon()
" let foldStart = foldclosed(v:beval_lnum)
" let foldEnd = foldclosedend(v:beval_lnum)
" let lines = []
" "Detect if we are in a fold
" if foldStart < 0
" "Detect if we are on a misspelled word
" let lines = spellsuggest(spellbadword(v:beval_text)[0], 5, 0)
" else
" "We are in a fold
" let numLines = foldEnd - foldStart + 1
" "If we have too many lines in fold, show only the first 14
" "and the last 14 lines
" if(numLines > 31)
" let lines = getline(foldStart, foldStart + 14)
" let lines += ['-- Snipped ' . (numLines - 30) . ' lines --']
" let lines += getline(foldEnd - 14, foldEnd)
" else
" "Less than 30 lines, lets show all of them
" let lines = getline(foldStart, foldEnd)
" endif
" endif
" "Return result
" return join(lines, has("balloon_multiline") ? "\n" : " ")
"endfunction
"set balloonexpr=FoldSpellBalloon()
"set ballooneval
""""""""""""""""""""""""""""""""""""""""""""""""""
"Nom du fichier en cours dans l'onglet pour Vim
""""""""""""""""""""""""""""""""""""""""""""""""""
function! ShortTabLine()
let ret = ''
for i in range(tabpagenr('$'))
"Select the color group for highlighting active tab
if i + 1 == tabpagenr()
let ret .= '%#errorMsg#'
else
let ret .= '%#TabLine#'
endif
"Find the buffername for the tablabel
let buflist = tabpagebuflist(i+1)
let winnr = tabpagewinnr(i+1)
let buffername = bufname(buflist[winnr - 1])
let filename = fnamemodify(buffername, ':t')
"Check if there is no name
if filename == ''
let filename = 'noname'
endif
"Only show the first 18 letters of the name and
".. if the filename is more than 20 letters long
if strlen(filename) >= 8
let ret .= '['.filename[0:17].'..]'
else
let ret .= '['.filename.']'
endif
endfor
"After the last tab fill with TabLineFill and reset tab page #
let ret .= '%#TabLineFill#%T'
return ret
endfunction
set tabline=%!ShortTabLine()
""""""""""""""""""""""""""""""""""""""""""""""""""
"Modification de l'affichage des replis
""""""""""""""""""""""""""""""""""""""""""""""""""
function! MyFoldFunction()
let line = getline(v:foldstart)
"Cleanup unwanted things in first line
let sub = substitute(line, '/\*\|\*/\|^\s+', '', 'g')
"Calculate lines in folded text
let lines = v:foldend - v:foldstart + 1
return v:folddashes.sub.' {...'.lines.' Lines...}'
endfunction
set foldtext=MyFoldFunction()
""""""""""""""""""""""""""""""""""""""""""""""""""
"Poser une marque visible avec F7
""""""""""""""""""""""""""""""""""""""""""""""""""
hi Mark guibg=indianred guifg=white gui=bold cterm=bold ctermfg=7 ctermbg=1
sign define mark text=!> texthl=Mark
map <F7> :exe 'sign place 001 name=mark line='.line(".").' buffer='.winbufnr(0)<CR>
map <C-F7> :sign unplace<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""
"Couleur pour les templates
""""""""""""""""""""""""""""""""""""""""""""""""""
hi def link Todo TODO
syn keyword Todo TODO FIXME XXX DEBUG
""""""""""""""""""""""""""""""""""""""""""""""""""
"special PHP
""""""""""""""""""""""""""""""""""""""""""""""""""
"J'utilise le theme desert, que je trouve bien adapté
colors desert
"LA police pour les programmeurs qui se respectent
set gfn=ProggySquareTT:h12:cANSI
"Met les fins de ligne du type UNIX.
set fileformat=unix
"L'UTF-8 dominera le monde !
set encoding=utf-8
"Met des x à la place des espaces qui trainent à la fin des lignes, radicales pour les voir et les supprimer
set listchars=trail:x
"Active la complétion automatique, complète dès que vous taper un mot, une fonction, sans avoir à appuyer sur TAB.
set complete=.,w,b,u,t,i,k~/.vim/doc/php.api
autocmd FileType php set omnifunc=phpcomplete#CompletePHP
source ~/.vim/plugin/word_complete.vim
call DoWordComplete()
let php_sql_query=1
let php_htmlInStrings=1
function! Find(name)
let l:_name = substitute(a:name, "\\s", "*", "g" )
let l:list = system("find . -iname '*".l:_name."*' -type f -not -name \"*.swp\" | perl -ne 'print \"$.\\t$_\"'" )
let l:num = strlen(substitute(l:list, "[^\n]", "", "g" ))
if l:num < 1
echo "'".a:name."' not found"
return
endif
if l:num != 1
echo l:list
let l:input = input("Which ? (<enter> = nothing)\n" )
if strlen(l:input) == 0
return
endif
if strlen(substitute(l:input, "[0-9]", "", "g" )) > 0
echo "Not a number"
return
endif
if l:input < 1 || l:input > l:num
echo "Out of range"
return
endif
let l:line = matchstr("\n".l:list, "\n".l:input."\t[^\n]*" )
else
let l:line = l:list
endif
let l:line = substitute(l:line, "^[^\t]*\t./", "", "" )
execute ":bad ".l:line
execute ":MiniBufExplorer"
execute ":UMiniBufExplorer"
endfunction
command! -nargs=1 Find :call Find("<args>" )
map ,f :Fi-