Ajout : vim/
[tool/hledger.git] / vim / .vimrc
diff --git a/vim/.vimrc b/vim/.vimrc
new file mode 100644 (file)
index 0000000..f9ec41a
--- /dev/null
@@ -0,0 +1,250 @@
+function! GetFoldExprFromIndent()
+ " Calcule l'indentation en fonction des tabulations
+ " et espaces au début des lignes
+       let line = getline(v:lnum)
+       let tabs = strlen(matchstr(line,"^\t*"))
+       let spaces = strlen(matchstr(line,"^[ \t]*")) - tabs
+       return tabs + ((spaces + 3) / 4)
+ endfunction
+hi FoldColumn ctermfg=black ctermbg=none cterm=bold
+hi Folded ctermfg=black ctermbg=none cterm=bold
+hi LineNr ctermfg=black ctermbg=none cterm=bold
+hi Pmenu  cterm=none ctermfg=white ctermbg=blue guibg=blue
+hi PmenuSel cterm=bold ctermfg=white ctermbg=red guibg=red
+hi Search ctermbg=yellow
+hi SpecialKey ctermfg=black cterm=bold
+hi StatusLine term=bold,reverse ctermfg=grey ctermbg=blue cterm=none
+hi StatusLineNC term=reverse ctermfg=blue ctermbg=none cterm=underline
+hi Visual guibg=yellow
+nmap <silent> * :set hls<CR>:let @/="\\<<C-r><C-w>\\>"<CR>/<BS>
+nmap <silent> µ :set hls<CR>:let @/="<C-r><C-w>"<CR>/<BS>
+nnoremap i <Up>
+nnoremap k <Down>
+nnoremap j <Left>
+nnoremap l <Right>
+xnoremap i <Up>
+xnoremap k <Down>
+xnoremap j <Left>
+xnoremap l <Right>
+nnoremap K J
+nnoremap J <Home>w
+nnoremap L <End>
+set autochdir
+set cmdheight=1
+set completeopt=longest,menu
+set directory=$HOME/var/cache/vim/swap
+set encoding=utf-8
+set foldcolumn=0
+set foldenable
+set foldexpr=GetFoldExprFromIndent()
+set foldmethod=expr
+set foldminlines=0
+set history=2048
+set hlsearch
+set incsearch
+set laststatus=2
+set lazyredraw
+set list
+set path=.,/usr/include,/usr/local/include,,
+set scroll=0
+set scrolloff=0
+set sidescroll=0
+set sidescrolloff=0
+set swapfile
+set matchpairs+=<:>
+set maxmempattern=2000
+set nocompatible
+set noerrorbells
+set noignorecase
+set loadplugins
+set nowrap
+set nowrapscan
+set number
+set ruler
+set runtimepath=$HOME/.vim,$VIMRUNTIME,$VIM
+set sessionoptions=curdir,folds
+set shiftwidth=2
+set showcmd
+set smartindent
+set statusline=%F%=\ %m%R\ %l:%c\ x%02B\ %Y\ %{&encoding}
+set tabstop=2
+set ttyfast
+set undolevels=512
+set updatetime=4096
+set verbose=0
+set viewdir=$HOME/var/lib/vim/view
+set viminfo+=n$HOME/var/cache/vim/info
+set novisualbell
+set visualbell t_vb=
+set whichwrap+=<,>,[,]
+set wildignore=*.a,*.d,*.o,*.so,*~,*.cmo,*.cmi,*.cmx,*.cmxs,*.cma,*.cmxa,*.byte,*.native
+set wildmenu
+set wildmode=longest,list,full
+syntax on
+if (&term == "linux")
+       set foldtext=substitute(getline(v\:foldstart),'\\t','\|_','g').'\ \ ('.(v\:foldend-v\:foldstart+1).')\ '
+       set fillchars=fold:_
+       set list listchars=nbsp:+,tab:\|_,trail:_,extends:>,precedes:<
+ else
+       set foldtext=substitute(getline(v\:foldstart),'\\t','⎢·','g').'\ \ ('.(v\:foldend-v\:foldstart+1).')\ '
+       set fillchars=fold:·
+       set list listchars=nbsp:¬,tab:⎢·,trail:·,extends:>,precedes:<
+ endif
+if (v:version >= 700)
+       hi TabLine term=bold,reverse ctermfg=white ctermbg=blue cterm=none
+       hi TabLineFill term=bold,reverse ctermfg=none ctermbg=blue cterm=none
+       hi TabLineSel term=reverse ctermfg=white ctermbg=none cterm=bold
+       inoremap <C-S-tab> <Esc>:tabprevious<CR>i
+       inoremap <C-t> <Esc>:tabnew<CR>
+       inoremap <C-tab> <Esc>:tabnext<CR>i
+       nnoremap <C-S-tab> :tabprevious<CR>
+       nnoremap <Esc><tab> :tabprevious<CR>
+       nnoremap <C-t> :tabnew<CR>
+       nnoremap <tab> :tabnext<CR>
+       nnoremap <C-tab> :tabprevious<CR>
+       nnoremap td :tabclose<CR>
+       nnoremap ti :tabfirst<CR>
+       nnoremap tj :tabprev<CR>
+       nnoremap tk :tablast<CR>
+       nnoremap tl :tabnext<CR>
+       nnoremap tm :tabm<Space>
+       nnoremap tn :tabnew<Space>
+       nnoremap tt :tabedit<Space>
+       set tabpagemax=1000
+       set sessionoptions+=tabpages
+ endif
+if (v:version >= 740)
+       set undodir=$HOME/var/cache/vim/undo/
+       set undofile
+ endif
+"""
+""" filetypes
+"""
+autocmd BufNewFile,BufRead *.hledger,*.ledger,*.journal setfiletype hledger
+autocmd Filetype hledger set iskeyword+=.,38,39,40,41,44,45,58
+"""
+""" plugins
+"""
+runtime plugin/gundo.vim
+runtime plugin/gzip.vim
+runtime macros/justify.vim
+let b:match_words = '«:»,“:”'
+runtime plugin/matchit.vim
+let g:netrw_liststyle = 3
+"let g:netrw_cursorline = 0
+let s:netrw_usercul = 0
+runtime plugin/netrwPlugin.vim
+
+" EasyAlign
+       vmap <Enter> <Plug>(EasyAlign)
+       nmap <Leader>a <Plug>(EasyAlign)
+       let g:easy_align_ignore_groups = ['Comment', 'String', 'hledgerComment', 'hledgerTransaction']
+
+" neocomplcache
+       " Disable automatic completion popup
+       let g:neocomplcache_disable_auto_complete = 1
+       " Disable AutoComplPop.
+       let g:acp_enableAtStartup = 0
+       " Use neocomplcache.
+       let g:neocomplcache_enable_at_startup = 1
+       " Use smartcase.
+       let g:neocomplcache_enable_smart_case = 1
+       " Set minimum syntax keyword length.
+       let g:neocomplcache_min_syntax_length = 2
+       let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
+       
+       " Define dictionary.
+       let g:neocomplcache_dictionary_filetype_lists = {
+               \ 'default' : '',
+               \ 'vimshell' : $HOME.'/.vimshell_hist',
+               \ 'scheme' : $HOME.'/.gosh_completions'
+               \ }
+       
+       " Define keyword.
+       if !exists('g:neocomplcache_keyword_patterns')
+           let g:neocomplcache_keyword_patterns = {}
+       endif
+       let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
+       
+       " Plugin key-mappings.
+       inoremap <expr><C-g>     neocomplcache#undo_completion()
+       inoremap <expr><C-l>     neocomplcache#complete_common_string()
+       
+       " Complete with <Tab>.
+       "inoremap <expr><TAB> pumvisible() ? "\<C-n>" : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>"
+       inoremap <expr><TAB> pumvisible() ? neocomplcache#complete_common_string() : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>"
+       
+       function! s:check_back_space()
+               let col = col('.') - 1
+               return !col || getline('.')[col - 1] =~ '\s'
+        endfunction
+       
+       " Choose candidate with <CR>.
+       inoremap <expr><CR> neocomplcache#smart_close_popup() . “\<CR>”
+       
+       " Recommended key-mappings.
+       " <CR>: close popup and save indent.
+       inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
+       function! s:my_cr_function()
+               return neocomplcache#smart_close_popup() . "\<CR>"
+               " For no inserting <CR> key.
+               "return pumvisible() ? neocomplcache#close_popup() : "\<CR>"
+        endfunction
+       " <TAB>: completion.
+       "inoremap <expr><TAB>  pumvisible() ? neocomplcache#complete_common_string() : "\<TAB>"
+       "inoremap <expr><TAB>  neocomplcache#complete_common_string()
+       " <C-h>, <BS>: close popup and delete backword char.
+       inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
+       inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
+       inoremap <expr><C-y>  neocomplcache#close_popup()
+       inoremap <expr><C-e>  neocomplcache#cancel_popup()
+       " Close popup by <Space>.
+       inoremap <expr><Space> pumvisible() ? neocomplcache#close_popup() : "\<Space>"
+       
+       " Sort choices by bytes
+       call neocomplcache#custom_source('_', 'sorters', ['sorter_bytes'])
+       
+       " For cursor moving in insert mode(Not recommended)
+       "inoremap <expr><Left>  neocomplcache#close_popup() . "\<Left>"
+       "inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>"
+       "inoremap <expr><Up>    neocomplcache#close_popup() . "\<Up>"
+       "inoremap <expr><Down>  neocomplcache#close_popup() . "\<Down>"
+       " Or set this.
+       "let g:neocomplcache_enable_cursor_hold_i = 1
+       " Or set this.
+       "let g:neocomplcache_enable_insert_char_pre = 1
+       
+       " AutoComplPop like behavior.
+       "let g:neocomplcache_enable_auto_select = 1
+       
+       " Enable heavy features.
+       " Use camel case completion.
+       "let g:neocomplcache_enable_camel_case_completion = 1
+       " Use underbar completion.
+       let g:neocomplcache_enable_underbar_completion = 1
+       
+       " Shell like behavior(not recommended).
+       "set completeopt+=longest
+       "let g:neocomplcache_enable_auto_select = 1
+       "let g:neocomplcache_disable_auto_complete = 1
+       "inoremap <expr><TAB>  pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"
+       
+       " Enable omni completion.
+       autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
+       autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
+       autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
+       autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
+       autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
+       
+       " Enable heavy omni completion.
+       if !exists('g:neocomplcache_omni_patterns')
+         let g:neocomplcache_omni_patterns = {}
+       endif
+       let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
+       let g:neocomplcache_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
+       let g:neocomplcache_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
+       
+       " For perlomni.vim setting.
+       " https://github.com/c9s/perlomni.vim
+       let g:neocomplcache_omni_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
+       runtime plugin/neocomplcache.vim