diff --git a/vim/.vimrc b/vim/.vimrc index 91632f5..e465290 100644 --- a/vim/.vimrc +++ b/vim/.vimrc @@ -1,4 +1,5 @@ set nocompatible + filetype off " --- init vundle @@ -18,10 +19,10 @@ Plugin 'MarcWeber/vim-addon-mw-utils' " Dependency for snipmate Plugin 'tomtom/tlib_vim' "Dependency for snipmate Plugin 'garbas/vim-snipmate' "Snippets Plugin 'easymotion/vim-easymotion' "Easy Motion -Plugin 'jiangmiao/auto-pairs' "Auto pairs brackets, parenthesis, etc. Plugin 'kana/vim-textobj-user' "User defined text objects Plugin 'kana/vim-textobj-indent' "Indent based text objects Plugin 'benmills/vimux' "Tmux integration +Plugin 'vim-scripts/argtextobj.vim' "function argument textobj " --- End init vundle call vundle#end() @@ -60,10 +61,13 @@ set tabstop=4 set lbr set tw=500 set t_Co=256 -set hidden "Hidden buffers may exist +set hidden +set switchbuf=vsplit syntax enable colorscheme desert +" Autoload when saving vimrc +au! BufWritePost .vimrc source ~/.vimrc " --- Own functions function! AddSemicolon() @@ -78,9 +82,42 @@ function! RunCmdVimux() endif endfunction +function! IsModified() + if &modified + return '* ' + endif + return '' +endfunction + +" Show insert mode in statusbar +function! ModeColor(mode) + if a:mode == 'i' + if &paste + hi ModeLine ctermbg=blue + else + hi ModeLine ctermbg=green + endif + elseif a:mode == 'r' + hi ModeLine ctermbg=red + else + hi ModeLine ctermbg=none + endif +endfunction + +au InsertEnter * call ModeColor(v:insertmode) +au InsertChange * call ModeColor(v:insertmode) +au InsertLeave * call ModeColor('n') +call ModeColor('n') + " --- Bindings let mapleader = "," - +" Close buffers +nnoremap q :bd +" Insert empty line before and after +nnoremap ok +" Goto next emptyline +nnoremap /^$ +" nnoremap <> ?^$ " evil spaces nnoremap c m':%s/\s\+$//e`' " double empty lines @@ -97,7 +134,9 @@ nnoremap sc :so ~/.vimrc nnoremap rr :call RunCmdVimux() nnoremap rq :call VimuxCloseRunner() nnoremap ; :call AddSemicolon() - +nnoremap todo :g/TODO/ +" 0 should find first non blank +nmap 0 ^ " --- Don't need a help inoremap nnoremap @@ -115,16 +154,17 @@ ino " --- Different use of undo nnoremap U -" --- We don't need useless whitespace at the of the line +" --- We don't need useless whitespace at the end of the line highlight WhitespaceEOL ctermbg=Red guibg=Red match WhitespaceEOL /\s\+$/ " --- Rice -set statusline=%m -set statusline+=\ %f -set statusline+=%= -set statusline+=%l -set statusline+=\ %c +set statusline=\ %#Modified#%{IsModified()}%* +set statusline+=%f +set statusline+=\ %#ModeLine#%=%* +set statusline+=\ L%l +set statusline+=\ C%c +hi Modified ctermfg=red hi StatusLine cterm=None ctermfg=green ctermbg=none hi Search cterm=NONE hi IncSearch cterm=underline ctermbg=none ctermfg=green @@ -137,19 +177,22 @@ hi PmenuSbar ctermfg=white ctermbg=black cterm=none let g:SuperTabNoCompleteAfter = ['^',',','\s'] " --- NERDTree tabs +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif nmap e :NERDTreeToggle autocmd StdinReadPre * let s:std_in=1 autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif -autocmd bufenter * if !exists("b:NERDTreeType") | NERDTreeClose | endif +" autocmd BufLeave * if (exists("b:NERDTreeType") && b:NERDTreeType == "primary") | normal :bd | endif let NERDTreeWinSize = 30 let NERDChristmasTree = 0 let NERDTreeChDirMode = 2 let NERDTreeIgnore=['\~$','\.pyc$','\.swp$'] let NERDTreeWinPos="left" +let NERDTreeMinimalUI = 1 " --- EasyMotion map / (easymotion-sn) omap / (easymotion-tn) +map ? (easymotion-bd-jk) map n (easymotion-next) map N (easymotion-prev)