color default "syntax clear syntax on "Allow special Vim improvements like multiple-undo set nocompatible "Seems to fuck up symlinks when set to no... [Debian bug #158657] set backupcopy=yes "Set improve Backspace set backspace=2 "Show the current edition mode on last line, number of column and line set showmode set ruler "Show line numbers set number set laststatus=2 set wildmode=longest,list,full " Set Auto-indentation "set autoindent "set cindent " Make command line X lines high set cmdheight=1 " Highlight search strings set hlsearch " Incremental search set incsearch " No wrap search set nowrapscan " Hide mouse when typing set mousehide " highlighting strings inside C comments let c_comment_strings=1 " Backup dir set autowrite " default error format "set efm=\"%f\"\\,\ line\ %l:\ error\ %m,\"%f\"\\,\ line\ %l:\ warning\ %m " remaps C-j & C-k to C-y and C-e (buffer up/down line-by-line) noremap noremap set nowrap noremap z2l noremap z2h "Macros nmap :source ~/.vim/bépo " folding set foldmethod=indent set foldignore= autocmd BufRead *.[ch] setlocal foldmethod=syntax autocmd BufRead /tmp/mutt-*[0-9] setlocal foldmethod=expr autocmd BufRead /tmp/mutt-*[0-9] setlocal foldexpr=(strlen(substitute(matchstr(getline(v:lnum),\"^\ *[>\ ]*\"),\"\ *\",\"\",\"g\"))) " Highlights columns 77-80 and 81+ autocmd BufRead /tmp/mutt-*[0-9] let w:m1=matchadd('Search', '\%<81v.\%>77v', -1) autocmd BufRead /tmp/mutt-*[0-9] let w:m2=matchadd('ErrorMsg', '\%>80v.\+', -1) set foldminlines=0 set foldcolumn=5 set foldlevel=999 nmap /^\(<<<<<<<\\|=======\\|>>>>>>>\) nmap :setlocal foldcolumn-=1:execute 'setlocal foldlevel='.(&foldcolumn - 2) nmap :setlocal foldcolumn+=1:execute 'setlocal foldlevel='.(&foldcolumn - 2) " close all " open all nmap zM nmap zR " open/close recursive under cursor " open/close under cursor nmap zA nmap za nmap :setlocal invfoldenable "buffer moving nmap l :bn nmap h :bN " When editing a file, always jump to the last known cursor position. " Don't do it when the position is invalid or when inside an event handler " (happens when dropping a file on gvim). autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ exe "normal zz" | \ endif function! CscopeSearch(csearch) let @/=a:csearch set hls let l:prompt = "Rechercher '".a:csearch."' avec cscope [cdefgist] : " echo l:prompt let l:ctype=nr2char(getchar()) redraw echo l:prompt.l:ctype." " return 'set hls | cscope find '.l:ctype.' '.a:csearch endfunction " Load local cscope db if exists if filereadable( expand("$PWD/tags") ) set tags=tags elseif filereadable( expand("$PWD/ctags.out") ) set tags=$pwd/ctags.out elseif has("cscope") if filereadable( expand("$PWD/cscope.out") ) set cst " Automagically done... "cscope add $PWD/cscope.out " cscope macros nmap c :execute CscopeSearch(expand("")) nmap f :execute CscopeSearch(expand("")) nmap % :execute CscopeSearch(expand("%:t")) nmap r :execute CscopeSearch(input("Rechercher : ")) endif endif " F*cking whitespaces autocmd BufRead * highlight ExtraWhitespace ctermbg=red ctermfg=black guibg=red autocmd BufRead * match ExtraWhitespace /\s\+$\| \+\ze\t\| \+\|\t\zs \+/ set list listchars=tab:│ ,precedes:‥,extends:‥ nmap :set invlist set title set autoindent set diffopt=iwhite,filler set guifont=LucidaTypewriter\ 8 " mouse " v -> enabled in visual mode " i -> enabled in insert mode " c -> enabled in command mode " a -> enabled in all modes set mouse=a set mousem=extend set tabstop=4 set shiftwidth=4 set noexpandtab map U yyp:s/[^ ]/-/g:noh map Y yyp:s/[^ ]/=/g:noh " Reformatting is done using 'gq' map Q :s/^/> / map q :s/^[ ]*>[ ]*// map u :noh runtime! ftplugin/man.vim map K :Man =expand("") " Function " Erase_Sig_but_Your() " " Author " Yann Kerhervé " Based on Luc Hermitte work " " Purpose " Deletes signatures at the end of e-mail replies. But keep " your sig intact (mutt-added). " Also deletes the empty lines (even those beginning by '>') " preceding the signature. " function! Erase_Sig_but_Your() " Search for the signature pattern : "^> -- $" let lastline = line ('$') let i = lastline " (1) while i >= 1 if getline(i) =~ '^> *-- $' break endif let i = i - 1 endwhile " let find the beginning of our sig let j = i while j < lastline let j = j + 1 if getline(j) =~ '^-- $' let j = j - 1 break endif endwhile " If (1) found, then if i != 0 " First, search for the last non empty (non sig) line while i >= 1 let i = i - 1 " rem : i can't value 1 if getline(i) !~ '^(>s*)*$' break endif endwhile " Second, delete these lines plus the signature let i = i + 1 exe 'normal '.i.'Gd'.j.'G' endif endfunction function! GitBlameCurrentLine() let l:line = line('.') let l:file = expand("%:t") let l:wd = expand("%:p:h") let content = system("cd " . l:wd . ";git blame -L ". l:line . "," . l:line . " " . l:file . " | sed 's/).*/)/'") let line = split(content, '\n')[0] echohl WarningMsg | echo line | echohl None endfunction command! GitBlameCurrentLine :call GitBlameCurrentLine() map b :GitBlameCurrentLine " n goto next empty reply-to paragraph " m opens an empty reply-paragraph at this line " d deletes everything until but the signature " w reformats entire mail but the signature " D deletes everything until but the previous reply-to § autocmd BufRead /tmp/mutt-*[0-9a-f] map n /^> $ autocmd BufRead /tmp/mutt-*[0-9a-f] map D ^d?^\([^>]\\|$\)?+O autocmd BufRead /tmp/mutt-*[0-9a-f] map d ^d/^-- $O autocmd BufRead /tmp/mutt-*[0-9a-f] map w ggv/^-- $:!par rTbgqRe 'B=.,?_A_a' 'Q=_s>\|' autocmd BufRead /tmp/mutt-*[0-9a-f] setlocal spell spelllang=fr,en,de autocmd BufRead /tmp/mutt-*[0-9a-f] setlocal textwidth=74 autocmd BufRead /tmp/mutt-*[0-9a-f] execute Erase_Sig_but_Your() autocmd BufRead /tmp/mutt-*[0-9a-f] :normal ,n map zc z=1 function! SetLocalTabs(tabsize) execute 'setlocal tabstop=' . a:tabsize execute 'setlocal softtabstop=' . a:tabsize execute 'setlocal shiftwidth=' . a:tabsize setlocal smarttab setlocal expandtab endfunction autocmd BufAdd *.py execute SetLocalTabs(4) autocmd BufEnter * set cursorline autocmd WinEnter * set cursorline autocmd BufLeave * set nocursorline autocmd WinLeave * set nocursorline " footnotes inoremap ,f :call VimFootnotes() inoremap ,r :exe b:pos function! VimFootnotes() if exists("b:vimfootnotenumber") let b:vimfootnotenumber = b:vimfootnotenumber + 1 let cr = "" else let b:vimfootnotenumber = 0 let cr = "\" endif let b:pos = line('.').' | normal! '.virtcol('.').'|'.'4l' exe "normal a[".b:vimfootnotenumber."]\G" if search("-- $", "b") exe "normal O".cr."[".b:vimfootnotenumber."] " else exe "normal o".cr."[".b:vimfootnotenumber."] " endif startinsert! endfunction