" _____ _ _ _ _ _ _ __ ___ "|_ _|_ _(_) |__ | (_)_ __ __| (_) \ \ / (_)_ __ ___ _ __ ___ " | | \ \ / / | '_ \| | | '_ \ / _` | | \ \ / /| | '_ ` _ \| '__/ __| " | | \ V /| | |_) | | | | | | (_| | | \ V / | | | | | | | | | (__ " |_| \_/ |_|_.__/|_|_|_| |_|\__,_|_| \_/ |_|_| |_| |_|_| \___| " "=== Pré-configuration ======================================================= runtime! debian.vim set nocompatible if filereadable("/etc/vim/vimrc.local") source /etc/vim/vimrc.local endif if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif filetype plugin indent on endif call pathogen#runtime_append_all_bundles() if has("autocmd") autocmd! bufwritepost .vimrc source ~/.vimrc endif filetype plugin on set ofu=syntaxcomplete#Complete runtime ftplugin/man.vim function ModeChange() if getline(1) =~ "^#!.*/bin/*" silent !chmod u+x endif endfunction au BufWritePost * call ModeChange() let MRU_Auto_Close = 1 command Conque :set nolist | ConqueTerm zsh command Zshs :set nolist | ConqueTermSplit zsh command Zsh :set nolist | ConqueTerm zsh command Bpythons :set nolist | ConqueTermSplit bpython command Bpython :set nolist | ConqueTerm bpython "============================================================================= "=== Interface =============================================================== if has("syntax") syntax on endif set t_Co=256 highlight NbSp ctermbg=lightgray guibg=lightred match NbSp /\%xa0/ "--- GVim ----------------------------------------------------------- if has('gui_running') "set guifont=Terminus ":set guioptions-=m "remove menu bar set guioptions-=T "remove toolbar set guioptions-=r "remove right-hand scroll bar nnoremap :if &go=~#'m'set go-=melseset go+=mendif nnoremap :if &go=~#'T'set go-=Telseset go+=Tendif nnoremap :if &go=~#'r'set go-=relseset go+=rendif "slate,ron,torte,fruity,dante,dw_red,dw_orange colorscheme neverland-darker "colorscheme zenburn highlight SpellBad term=underline gui=undercurl guisp=Orange else set t_Co=256 "colorscheme anotherdark colorscheme neverland-darker "colorscheme zenburn endif if !has("gui_running") if &term =~ "rxvt-unicode" let &t_SI = "\033]12;white\007" let &t_EI = "\033]12;red\007" :silent !echo -ne "\033]12;red\007" autocmd VimLeave * :silent :!echo -ne "\033]12;red\007" endif endif set laststatus=2 set statusline= " clear set statusline+=%-3.3n\ "nombre buffer set statusline+=%f\ "nom fichier set statusline+=%h%m%r%w "flags set statusline+=[%{strlen(&ft)?&ft:'none'}, "type fichier set statusline+=%{strlen(&fenc)?&fenc:&enc}, "encodage set statusline+=%{&fileformat}] "format fichier set statusline+=%* set statusline+=%= "alignement droite "set statusline+=%-14.(%l,%c%V%)\ %<%P " offset set statusline+=%{strftime('%H\h%M')} "heure set statusline+=\ [(%(%l,%c%V%)) "position set statusline+=\ %<%P] "set background=dark set number " Nombre de lignes affiché set si " Indentations ''intelligentes'' set showcmd " Show (partial) command in status line. set showmatch " Show matching brackets. set mouse=a " Enable mouse usage (all modes) set mousehide set showmode set ruler set autochdir " Changement automatique de repertoire set fileformats=unix,dos " Formats Unix et DOS set encoding=utf-8 " Formatage UTF-8 set fileencoding=utf-8 " Idem set ttyfast " Améliore la rapidité d'affichage set shell=zsh " Précise le shell à utiliser set incsearch " recherche incrémentale set hlsearch " highlighte le dernier motif de recherche " set formatprg=par\ 80j " Le programme de formatage est par, et justifie selon des lignes de 80 caractères. set history=1000 " Vim retient 1000 commandes en historique set hidden " Meilleure gestion des buffers set wildmenu " Completion dans l'interface set wildmode=list:longest " Comportement de la complétion semblable à celui d'un shell set title "============================================================================= "=== Rédaction en LaTeX, orthographe ========================================= "--- Correction orthographique--------------------------------------- setlocal spell spelllang=fr " Correcteur orthographique pour le français set nospell " Par défaut, pas de correction orthographique autocmd BufEnter,BufNewFile,BufRead *.txt set spell " Activation pour les .txt au filetype tex set spell " Activation pour les fichiers TeX/LaTeX " Ajustement pour la fonction d’activation/desactivation de la correction orthographique autocmd BufEnter,BufNewFile,BufRead *.txt let g:spellactive=1 au filetype tex let g:spellactive=1 "--- LaTeX ---------------------------------------------------------- au filetype tex set grepprg=grep\ -nH\ $* au filetype tex let g:tex_flavor='latex' au bufNewFile *.tex set ft=latex.tex " Template pour LaTeX au filetype tex set sw=2 au filetype tex set iskeyword+=: au filetype tex set list " Affichage des caractères invisibles (retours à la ligne, etc…) "============================================================================= "=== Programmation =========================================================== "--- Python --------------------------------------------------------- autocmd FileType python set omnifunc=pythoncomplete#Complete "Complétion "au bufNewFile *.py 0r ~/.vim/templates/python.py "Template Python (Méthode sans plugin) au bufNewFile *.py set ft=python.py " Template Python (Méthode par plugin) au filetype python set expandtab " Indentation par espaces "au filetype python let w:m1=matchadd('ErrorMsg', '\%>80v.\+', -1) " Formatage PEP8 emmerdant au filetype python highlight OverLength term=bold au filetype python match OverLength /\%80v.\+/ " Formatage PEP8 souple au filetype python set foldmethod=indent " Repli par indentations au filetype python set cindent " Indentation automatique au filetype python set autoindent shiftwidth=4 " Largeur de l'indentation définie à 4 espaces au filetype python set softtabstop=4 " Insertion intelligente de tabs/espaces au filetype python set list " Affichage des caractères invisibles… au filetype python set lcs:tab:>-,trail:X " …et définition de leur apparence au BufEnter *.rpy set syntax=renpy.vim "--- C/CPP ---------------------------------------------------------- au bufNewFile *.c 0r ~/.vim/templates/c.c " Template pour les fichiers .c (Méthode sans plugin -> FIXME) au bufNewFile *.h 0r ~/.vim/templates/h.h " Template pour les fichiers .h (Méthode sans plugin -> FIXME) au filetype c set omnifunc=ccomplete#Complete " Complétion au filetype c set cindent " Indentation automatique au filetype c set autoindent shiftwidth=4 " Largeur de l'indentation définie à 4 espaces au filetype c set softtabstop=4 " Insertion intelligente de tabs/espaces au filetype c set foldmethod=syntax " Repli par mots reservés au filetype c set list " Affichage des caractères invisibles… au filetype c set lcs:tab:>-,trail:X " …et définition de leur apparence "--- Ruby ----------------------------------------------------------- au bufNewFile *.rb set ft=ruby.rb " Template Ruby (Méthode par plugin) "============================================================================= "=== Keymapings ============================================================== "--- Touche F5 ------------------------------------------------------ " ____ _ __ _ _ _ _ _ " / ___|_ __ ___ _ __ __ _ __| | ___ ___ / _| / \ _ __ | |_(_) ___ ___| |__ | | "| | _| '__/ _ \ '_ \ / _` |/ _` |/ _ \ / _ \| |_ / _ \ | '_ \| __| |/ _ \ / __| '_ \ | | "| |_| | | | __/ | | | (_| | (_| | __/ | (_) | _| / ___ \| | | | |_| | (_) | (__| | | | |_| " \____|_| \___|_| |_|\__,_|\__,_|\___| \___/|_| /_/ \_\_| |_|\__|_|\___/ \___|_| |_| (_) au filetype tex map :w:!pdflatex %:!apvlv %:r.pdf:!rm -f *.out *.aux *.log au filetype python map :w:!echo -e '---Python---\n':!python2 %:!rm *.pyc:!rm *py~ au filetype c map :!gcc *.c -o %:r\rr au filetype sh map :!./% au filetype ruby map :w:!echo -e '---Ruby---\n':!ruby % imap vmap noremap "--- Touche F2 : Tabs ----------------------------------------------- map :tabnext imap "--- Touche F6 : NERDTree ------------------------------------------- map :execute ToggleNERDTree() imap "--- Touche F7 : Correction orthographique -------------------------- map :execute ToggleSpell() imap "--- F8 : TList ----------------------------------------------------- map :execute ToggleTList() imap "--- F9 : MRU ------------------------------------------------------- map :MRU imap "--- Touche leader ( \ ) + … --------------------------------------- ">>> Gundo map g :GundoToggle ">>> Workspace map w :WsToggle ">>> Écrire la date dans le fichier map d :r !strftime("%d/%m/%y %H:%M") ">>> Modifier le vimrc (L+v) et le recharger (L+s) nmap v :e ~/.vimrc nmap s :source ~/.vimrc ">>> Presse papier de X nmap p :r! xsel -p if exists(":Tabularize") nmap t= :Tabularize /= vmap t= :Tabularize /= nmap t: :Tabularize /: vmap t: :Tabularize /: endif if exists('*HexHighlight()') nmap c :call HexHighlight() endif "--- Touches diverses ----------------------------------------------- ">>> Changer les splits de taille avec + et - nnoremap + :exe "resize " . (winheight(0) * 3/2) nnoremap - :exe "resize " . (winheight(0) * 2/3) map ,gc :!gca map ,g :!gca:!gpom ">>> Déplacement de lignes nmap s [e nmap t ]e vmap s [egv vmap t ]egv "--- Disposition BÉPO ----------------------------------------------- "source ~/.vimrc.bepo " {W} -> [É] " —————————— " On remappe W sur É : noremap é w noremap É W " Corollaire, pour effacer/remplacer un mot quand on n’est pas au début (daé / laé). " (attention, cela diminue la réactivité du {A}…) noremap aé aw noremap aÉ aW " Pour faciliter les manipulations de fenêtres, on utilise {W} comme un Ctrl+W : noremap w noremap W " [HJKL] -> {CTSR} " ———————————————— " {cr} = « gauche / droite » noremap c h noremap r l " {ts} = « haut / bas » noremap t j noremap s k " {CR} = « haut / bas de l'écran » noremap C H noremap R L " {TS} = « joindre / aide » noremap T J noremap S K " Corollaire : repli suivant / précédent noremap zs zj noremap zt zk " {HJKL} <- [CTSR] " ———————————————— " {J} = « Jusqu'à » (j = suivant, J = précédant) noremap j t noremap J T " {L} = « Change » (l = attend un mvt, L = jusqu'à la fin de ligne) noremap l c noremap L C " {H} = « Remplace » (h = un caractère slt, H = reste en « Remplace ») noremap h r noremap H R " {K} = « Substitue » (k = caractère, K = ligne) noremap k s noremap K S " Corollaire : correction orthographique noremap ]k ]s noremap [k [s " Désambiguation de {g} " ————————————————————— " ligne écran précédente / suivante (à l'intérieur d'une phrase) noremap gs gk noremap gt gj " onglet précédant / suivant noremap gb gT noremap gé gt " optionnel : {gB} / {gÉ} pour aller au premier / dernier onglet noremap gB :exe "silent! tabfirst" noremap gÉ :exe "silent! tablast" " optionnel : {g"} pour aller au début de la ligne écran noremap g" g0 " <> en direct " ———————————— noremap « < noremap » > au filetype tex noremap < « au filetype tex noremap > » " Chiffres en accès direct " ———————————————————————— "noremap " 1 "noremap 1 " "noremap « 2 "noremap 2 < "noremap » 3 "noremap 3 > "noremap ( 4 "noremap 4 ( "noremap ) 5 "noremap 5 ) "noremap @ 6 "noremap 6 @ "noremap + 7 "noremap 7 + "noremap - 8 "noremap 8 - "noremap / 9 "noremap 9 / "noremap * 0 "noremap 0 * "============================================================================= "=== Fonctions persos ======================================================== "--- Activation/Désactivation de la correction orthographique ------- let g:spellactive=0 function! ToggleSpell() if g:spellactive != 1 let g:spellactive=1 execute("set spell") else let g:spellactive=0 execute("set nospell") endif endfunction "--- Insertion de licenses ------------------------------------------ function! CCBYNCSA() execute(":r ~/.vim/licenses/ccbyncsa_insert") endfunction command CCBYNCSA :execute CCBYNCSA() function! CCBYNCSALATEX() execute(":r ~/.vim/licenses/latex_ccbyncsa_insert.tex") endfunction command CCBYNCSALATEX :execute CCBYNCSALATEX() function! GPL() execute(":r ~/.vim/licenses/gpl_insert") endfunction command GPL :execute GPL() function! LGPL() execute(":r ~/.vim/licenses/lgpl_insert") endfunction function! GPLC() execute(":r ~/.vim/licenses/gpl-license") endfunction function! LGPLC() execute(":r ~/.vim/licenses/lgpl-license") endfunction "============================================================================= "=== Fonctions pour les plugins ============================================== "--- Afficher / Cacher NERDTree ------------------------------------- let g:nerdtreeopened=1 function! ToggleNERDTree() execute(":NERDTreeToggle") if g:nerdtreeopened != 0 let g:nerdtreeopened=0 else let g:nerdtreeopened=1 endif endfunction function! ResumeNERDTree() if g:nerdtreeopened != 0 execute(":NERDTree") execute(":NERDTreeMirror") else execute(":NERDTreeClose") endif endfunction "--- Afficher / Cacher TList ---------------------------------------- let g:tlistopened=0 function! ToggleTList() execute(":TlistToggle") if g:tlistopened != 0 let g:tlistopened=0 else let g:tlistopened=1 endif endfunction function! ResumeTList() if g:tlistopened != 0 execute(":TlistClose") execute(":TlistOpen") else execute(":TlistClose") endif endfunction "=============================================================================