]> git.rmz.io Git - dotfiles.git/blobdiff - vim/vimrc
Merge branch 'master' into vim-clean
[dotfiles.git] / vim / vimrc
index 74889e23fd98b7cf5c503f62aec4a7ab304f3ced..ab6026046a43d55e4deaa694f7e50c2717a7c811 100644 (file)
--- a/vim/vimrc
+++ b/vim/vimrc
@@ -3,45 +3,63 @@
 " Author:   Samir Benmendil <samir.benmendil[at]gmail[dot]com>
 "
 
 " Author:   Samir Benmendil <samir.benmendil[at]gmail[dot]com>
 "
 
-" use xdg
-set runtimepath=$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
-
 " bundles {{{1
 filetype off
 " bundles {{{1
 filetype off
+set runtimepath& " reset rtp
+autocmd!
+
 set runtimepath+=$XDG_DATA_HOME/vim/vundle
 call vundle#rc('$XDG_DATA_HOME/vim')
 
 set runtimepath+=$XDG_DATA_HOME/vim/vundle
 call vundle#rc('$XDG_DATA_HOME/vim')
 
-Bundle 'gmarik/vundle'
-
-Bundle 'bling/vim-airline'
-Bundle 'elzr/vim-json'
-Bundle 'ervandew/ag.git'
-Bundle 'http://git.code.sf.net/p/vim-latex/vim-latex'
-Bundle 'kien/ctrlp.vim'
-Bundle 'majutsushi/tagbar'
-Bundle 'scrooloose/nerdtree'
-Bundle 'scrooloose/syntastic'
-Bundle 'sjl/gundo.vim'
-Bundle 'tomtom/tcomment_vim'
-Bundle 'tpope/vim-fugitive'
-Bundle 'tpope/vim-surround'
-Bundle 'tpope/vim-unimpaired'
-Bundle 'valloric/youcompleteme'
-Bundle 'zhaocai/goldenview.vim'
-
-Bundle 'ompugao/ros.vim'
-Bundle 'ompugao/ctrlp-ros'
-
-Bundle 'derekwyatt/vim-fswitch'
-Bundle 'jalcine/cmake.vim'
+Plugin 'gmarik/vundle'
+
+Plugin 'bling/vim-airline'
+Plugin 'elzr/vim-json'
+Plugin 'rking/ag.vim'
+Plugin 'http://git.code.sf.net/p/vim-latex/vim-latex'
+Plugin 'kien/ctrlp.vim'
+Plugin 'kshenoy/vim-signature'
+Plugin 'majutsushi/tagbar'
+Plugin 'scrooloose/nerdtree'
+Plugin 'scrooloose/syntastic'
+Plugin 'sjl/gundo.vim'
+Plugin 'tomtom/tcomment_vim'
+Plugin 'tpope/vim-endwise'
+Plugin 'tpope/vim-fugitive'
+Plugin 'tpope/vim-repeat'
+Plugin 'tpope/vim-surround'
+Plugin 'tpope/vim-unimpaired'
+Plugin 'valloric/youcompleteme'
+
+Plugin 'ompugao/ros.vim'
+Plugin 'ompugao/ctrlp-ros'
+
+Plugin 'firef0x/pkgbuild.vim'
+Plugin 'derekwyatt/vim-fswitch'
+" seems to have problems right now... may be add later?
+" Plugin 'jalcine/cmake.vim'
+" Plugin 'powerman/vim-plugin-viewdoc'
+
+Plugin 'airblade/vim-gitgutter'
+Plugin 'Raimondi/delimitMate'
+Plugin 'SirVer/ultisnips'
+Plugin 'Lokaltog/vim-easymotion'
+
+" remove entries first
+set runtimepath -=$HOME/.vim
+set runtimepath -=$HOME/.vim/after
+set runtimepath -=$XDG_CONFIG_HOME/vim
+set runtimepath -=$XDG_CONFIG_HOME/vim/after
+" then prepend and append them
+set runtimepath ^=$XDG_CONFIG_HOME/vim
+set runtimepath +=$XDG_CONFIG_HOME/vim/after
 
 filetype plugin indent on
 
 
 filetype plugin indent on
 
-" moving around, searching and patterns {{{1
-set incsearch           " show match for partly typed search command
-set ignorecase          " ignore case when using a search pattern
-set smartcase           " override 'ignorecase' when pattern has upper case characters
-set hlsearch                    " highlight all matches for the last used search pattern
+" bindings {{{1
+" allow both <space> and / to be <leader>
+map <space> <leader>
+nnoremap <leader><cr> :make<cr>
 
 " use leader-n to unhighlight search
 nmap <silent> <Leader>n :silent nohl<CR>
 
 " use leader-n to unhighlight search
 nmap <silent> <Leader>n :silent nohl<CR>
@@ -49,32 +67,25 @@ nmap <silent> <Leader>n :silent nohl<CR>
 nmap <Leader># :%s:<C-R>/::gn<CR>
 " center cursor after search
 nnoremap n nzz
 nmap <Leader># :%s:<C-R>/::gn<CR>
 " center cursor after search
 nnoremap n nzz
+
 " disable arrows
 " disable arrows
-inoremap <Up> <NOP>
-inoremap <Down> <NOP>
-inoremap <Left> <NOP>
+noremap  <Up>    <NOP>
+noremap  <Down>  <NOP>
+noremap  <Left>  <NOP>
+noremap  <Right> <NOP>
+inoremap <Up>    <NOP>
+inoremap <Down>  <NOP>
+inoremap <Left>  <NOP>
 inoremap <Right> <NOP>
 inoremap <Right> <NOP>
-noremap <Up> <NOP>
-noremap <Down> <NOP>
-noremap <Left> <NOP>
-noremap <Right> <NOP>
-
-set nostartofline       " don't  move the cursor to the first non-blank char of a line
-set path=.,**           " current + subdirectory search for :find, :grep:, ...
-
-" displaying text {{{1
-set scrolloff=5                 " number of screen lines to show around the cursor
-set wrap                        " long lines wrap
-set linebreak                   " wrap long lines at a character in 'breakat'
-set showbreak=▒▒                " show these chars for wrapped lines
-
-set lazyredraw                  " don't redraw while executing macros
-
-set list                        " show chars defined in 'listchars'
-set listchars=tab:»·,trail:·    " list of strings used for list mode
+cnoremap <Up>    <NOP>
+cnoremap <Down>  <NOP>
+cnoremap <Left>  <NOP>
+cnoremap <Right> <NOP>
+cnoremap <C-K>   <Up>
+cnoremap <C-J>   <Down>
+cnoremap <C-H>   <Left>
+cnoremap <C-L>   <Right>
 
 
-set number                      " show the line number for each line
-set relativenumber              " show the relative line number for each line
 " toggle relativenumber
 nnoremap <silent> <Leader>u :exe "set relativenumber!"<CR>
 
 " toggle relativenumber
 nnoremap <silent> <Leader>u :exe "set relativenumber!"<CR>
 
@@ -92,13 +103,9 @@ if has("autocmd")
     \ endif
 endif
 
     \ endif
 endif
 
-
-" syntax, highlighting and spelling {{{1
-set background=dark             " Dark background, d'uh!
+colorscheme badwolf
 syntax on
 
 syntax on
 
-set spelllang=en_gb             " list of accepted languages
-set dictionary=spell            " list of dictionary files for keyword completion
 " Spell Check http://tex.stackexchange.com/a/52932
 let b:myLang=0
 let g:myLangList=["en_gb","en_us","de","fr"]
 " Spell Check http://tex.stackexchange.com/a/52932
 let b:myLang=0
 let g:myLangList=["en_gb","en_us","de","fr"]
@@ -129,29 +136,97 @@ if has("autocmd")
         \ if &omnifunc == "" | setl omnifunc=syntaxcomplete#Complete | endif
 endif
 
         \ if &omnifunc == "" | setl omnifunc=syntaxcomplete#Complete | endif
 endif
 
-" multiple windows {{{1
+map <F1> :ls<CR>:b<space>
+
+nmap <C-L> <C-W>w
+nmap <C-H> <C-W>W
+
+
+"xterm mouse with middleclick paste
+nnoremap <MiddleMouse> i<MiddleMouse>
+vnoremap <MiddleMouse> s<MiddleMouse>
+
+" fix legacy vi inconsistency
+map Y y$
+
+" allow repeat operator on visual
+vnoremap . :normal .<CR>
+
+" add line without changing position or leaving mode
+noremap <silent> <Leader>o :set paste<CR>m`o<ESC>``:set nopaste<CR>
+noremap <silent> <Leader>O :set paste<CR>m`O<ESC>``:set nopaste<CR>
+
+" Don't use Ex mode, use Q for formatting
+map Q gq
+
+" allow undoing in insert-mode
+inoremap <C-U> <C-G>u<C-U>
+inoremap <C-W> <C-G>u<C-W>
+
+nmap <Leader>b :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
+nmap <Leader>B :set expandtab tabstop=8 shiftwidth=8 softtabstop=4<CR>
+nmap <Leader>M :set noexpandtab tabstop=8 softtabstop=4 shiftwidth=4<CR>
+nmap <Leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>
+
+" space will toggle current fold in normal mode
+nnoremap <leader><Space> za
+" create folds around visual selection
+vnoremap <leader><Space> zf
+
+autocmd BufWinLeave *.* mkview
+autocmd BufWinEnter *.* silent loadview
+
+" save with sudo
+cmap w!! w !sudo tee % > /dev/null
+
+
+" options {{{1
+" moving around, searching and patterns {{{2
+set incsearch           " show match for partly typed search command
+set ignorecase          " ignore case when using a search pattern
+set smartcase           " override 'ignorecase' when pattern has upper case characters
+set hlsearch            " highlight all matches for the last used search pattern
+
+set nostartofline       " don't move the cursor to the first non-blank char of a line
+set path=.,include/,../include/,/usr/include/c++/*,/opt/ros/hydro/include
+
+" displaying text {{{2
+set scrolloff=5                 " number of screen lines to show around the cursor
+set nowrap                      " long lines wrap
+set linebreak                   " wrap long lines at a character in 'breakat'
+set showbreak=▒▒                " show these chars for wrapped lines
+
+set lazyredraw                  " don't redraw while executing macros
+
+set list                        " show chars defined in 'listchars'
+set listchars=tab:»·,trail:·    " list of strings used for list mode
+set listchars+=extends:⋯,precedes:⋯
+set sidescrolloff=1             " don't scroll over the listchars
+
+set number                      " show the line number for each line
+set relativenumber              " show the relative line number for each line
+
+" syntax, highlighting and spelling {{{2
+set dictionary=spell            " list of dictionary files for keyword completion
+
+" multiple windows {{{2
 set laststatus=2                " 0, 1 or 2; when to use a status line for the last window
 
 set previewheight=20            " default height for the preview window
 
 set splitright                  " a new window is put right of the current one
 
 set laststatus=2                " 0, 1 or 2; when to use a status line for the last window
 
 set previewheight=20            " default height for the preview window
 
 set splitright                  " a new window is put right of the current one
 
-map <F1> :ls<CR>:b<space>
-
-" using the mouse {{{1
+" using the mouse {{{2
 set mouse=rnv                   " list of flags for using the mouse
 set ttymouse=xterm              " type of mouse
 
 set mouse=rnv                   " list of flags for using the mouse
 set ttymouse=xterm              " type of mouse
 
-"xterm mouse with middleclick paste
-nnoremap <MiddleMouse> i<MiddleMouse>
-vnoremap <MiddleMouse> s<MiddleMouse>
-
-" messages and info {{{1
+" messages and info {{{2
 set showcmd                     " Show (partial) command in status line.
 set ruler                       " show the cursor position all the time
 set confirm                     " Ask what to do when closing unsaved documents
 set showcmd                     " Show (partial) command in status line.
 set ruler                       " show the cursor position all the time
 set confirm                     " Ask what to do when closing unsaved documents
+set shortmess=filnxtoOI         " don't show intro message
 
 
-" editing text {{{1
+" editing text {{{2
 set backspace=indent,eol,start  " allow backspacing over everything in insert mode
 
 set showmatch                   " Show matching brackets.
 set backspace=indent,eol,start  " allow backspacing over everything in insert mode
 
 set showmatch                   " Show matching brackets.
@@ -164,36 +239,7 @@ set nrformats=hex               " number formats recognized for CTRL-A and CTRL-
 " whether to use a popup menu for Insert mode completion
 set completeopt=longest,menuone,preview
 
 " whether to use a popup menu for Insert mode completion
 set completeopt=longest,menuone,preview
 
-" Indent if we're at the beginning of a line. Else, do completion.
-function! InsertTabWrapper()
-  let col = col('.') - 1
-  if !col || getline('.')[col - 1] !~ '\k'
-    return "\<Tab>"
-  else
-    return "\<C-N>"
-endif
-endfunction
-inoremap <Tab> <C-R>=InsertTabWrapper()<CR>
-inoremap <S-Tab> <C-P>
-
-" fix legacy vi inconsistency
-map Y y$
-
-" allow repeat operator on visual
-vnoremap . :normal .<CR>
-
-" add line without changing position or leaving mode
-map <Leader>o :set paste<CR>m`o<ESC>``:set nopaste<CR>
-map <Leader>O :set paste<CR>m`O<ESC>``:set nopaste<CR>
-
-" Don't use Ex mode, use Q for formatting
-map Q gq
-
-" allow undoing in insert-mode
-inoremap <C-U> <C-G>u<C-U>
-inoremap <C-W> <C-G>u<C-W>
-
-" tabs and indent {{{1
+" tabs and indent {{{2
 set shiftwidth=4                " number of spaces used for each step of (auto)indent
 set smarttab                    " a <Tab> in an indent inserts 'shiftwidth' spaces
 set softtabstop=4               " if non-zero, number of spaces to insert for a <Tab>
 set shiftwidth=4                " number of spaces used for each step of (auto)indent
 set smarttab                    " a <Tab> in an indent inserts 'shiftwidth' spaces
 set softtabstop=4               " if non-zero, number of spaces to insert for a <Tab>
@@ -205,26 +251,14 @@ set cinoptions=l1,c4,(0,U1,w1,m1,j1,J1
 
 set pastetoggle=<F11>           " key sequence to toggle paste mode
 
 
 set pastetoggle=<F11>           " key sequence to toggle paste mode
 
-nmap <Leader>b :set expandtab tabstop=4 shiftwidth=4 softtabstop=4<CR>
-nmap <Leader>B :set expandtab tabstop=8 shiftwidth=8 softtabstop=4<CR>
-nmap <Leader>M :set noexpandtab tabstop=8 softtabstop=4 shiftwidth=4<CR>
-nmap <Leader>m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2<CR>
-
-" folding {{{1
+" folding {{{2
 set foldmethod=marker           " folding type
 set foldlevelstart=0            " value for 'foldlevel' when starting to edit a file
 
 set foldmethod=marker           " folding type
 set foldlevelstart=0            " value for 'foldlevel' when starting to edit a file
 
-" space will toggle current fold in normal mode
-nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR>
-" create folds around visual selection
-vnoremap <Space> zf
-
 " save and restore folds
 set viewoptions=folds,cursor    " don't save local options
 " save and restore folds
 set viewoptions=folds,cursor    " don't save local options
-autocmd BufWinLeave *.* mkview
-autocmd BufWinEnter *.* silent loadview
 
 
-" reading and writing files {{{1
+" reading and writing files {{{2
 set writebackup                 " write a backup file before overwriting a file
 set backup                      " keep a backup after owerwriting a file
 set backupdir=$XDG_CACHE_HOME/vim
 set writebackup                 " write a backup file before overwriting a file
 set backup                      " keep a backup after owerwriting a file
 set backupdir=$XDG_CACHE_HOME/vim
@@ -234,44 +268,50 @@ set undodir=$XDG_CACHE_HOME/vim
 
 set autowrite                   " automatically write a file when leaving a modified buffer
 
 
 set autowrite                   " automatically write a file when leaving a modified buffer
 
-" save with sudo
-cmap w!! w !sudo tee % > /dev/null
-
-" the swap file {{{1
+" the swap file {{{2
 set directory=$XDG_CACHE_HOME/vim,.,/var/tmp
 
 set directory=$XDG_CACHE_HOME/vim,.,/var/tmp
 
-" command line editing {{{1
+" command line editing {{{2
 set history=500                 " how many command lines are remembered
 set history=500                 " how many command lines are remembered
-set wildmode=longest:full       " specifies how command line completion works
+set wildmode=longest:full,full  " specifies how command line completion works
 set wildmenu                    " command-line completion shows a list of matches
 
 set wildmenu                    " command-line completion shows a list of matches
 
-" various {{{1
+" various {{{2
 set virtualedit=block           " let cursor move past last char in <C-V> mode
 set virtualedit=block           " let cursor move past last char in <C-V> mode
-set viminfo='100,<50,s10,h,n$XDG_CACHE_HOME/vim/viminfo " viminfo defaults but save file in .vim
+set viminfo='100,<50,s10,h,n$XDG_CACHE_HOME/vim/viminfo " viminfo defaults but save file in .cache
 
 set viewdir=$XDG_CACHE_HOME/vim
 
 " plugins {{{1
 
 set viewdir=$XDG_CACHE_HOME/vim
 
 " plugins {{{1
+" ag {{{2
+let g:AgSmartCase = 1
+nnoremap <leader>ag yiw:Ag \12"<cr>
+vnoremap <leader>ag y:Ag \12"<cr>
+
 " airline {{{2
 let g:airline_detect_whitespace=2
 " airline {{{2
 let g:airline_detect_whitespace=2
-let g:airline_whitespace_symbol = 'Ξ'
-let g:airline_linecolumn_prefix = '␊ '
-let g:airline_left_sep = '▶'
-let g:airline_right_sep = '◀'
 let g:airline#extensions#tabline#enabled = 1
 let g:airline#extensions#tabline#enabled = 1
+let g:airline_powerline_fonts = 1
 
 " GoldenView {{{2
 
 " GoldenView {{{2
-let g:goldenview__enable_default_mapping = 0
-nmap <silent> <C-N>   <Plug>GoldenViewSplit
-nmap <silent> <C-L>   <Plug>GoldenViewNext
-nmap <silent> <C-H>   <Plug>GoldenViewPrevious
-nmap <silent> <C-M>   <Plug>GoldenViewSwitchMain
-nmap <silent> <C-S-M> <Plug>GoldenViewPrevious
+"let g:goldenview__enable_default_mapping = 0
+"nmap <silent> <C-N>   <Plug>GoldenViewSplit
+"nmap <silent> <C-L>   <Plug>GoldenViewNext
+"nmap <silent> <C-H>   <Plug>GoldenViewPrevious
+"nmap <silent> <C-M>   <Plug>GoldenViewSwitchMain
+"nmap <silent> <C-S-M> <Plug>GoldenViewPrevious
 
 " Gundo {{{2
 nnoremap <F7> :GundoToggle<CR>
 " fugitive {{{2
 nmap <silent> <leader>dd :tab split \| Gdiff \| wincmd h<CR>
 
 " Gundo {{{2
 nnoremap <F7> :GundoToggle<CR>
 " fugitive {{{2
 nmap <silent> <leader>dd :tab split \| Gdiff \| wincmd h<CR>
+" delete fugitive buffers when closed
+autocmd BufReadPost fugitive://* set bufhidden=delete
+
+nnoremap <silent> <leader>gs :Gstatus<CR>
+nnoremap <silent> <leader>gd :Gdiff<CR>
+nnoremap <silent> <leader>gc :tab Gcommit -v<CR>
+nnoremap <silent> <leader>gw :Gwrite<cr>
 
 " NERDTree {{{2
 " open/close NERDTree with \e
 
 " NERDTree {{{2
 " open/close NERDTree with \e
@@ -303,8 +343,16 @@ let g:tagbar_autoshowtag = 1
 let g:tagbar_width = 25
 let g:tagbar_iconchars = ['+', '-']
 
 let g:tagbar_width = 25
 let g:tagbar_iconchars = ['+', '-']
 
+" UltiSnips {{{2
+let g:UltiSnipsEditSplit = 'vertical'
+let g:UltiSnipsSnippetsDir = "$XDG_CONFIG_HOME/vim/ultisnips"
+
 " YouCompleteMe {{{2
 " YouCompleteMe {{{2
-let g:ycm_extra_conf_globlist = ['/mnt/data/src/*']
+let g:ycm_extra_conf_globlist = ['~/src/*','/mnt/data/src/*']
+let g:ycm_add_preview_to_completeopt = 1
+let g:ycm_autoclose_preview_window_after_insertion = 1
+"let g:ycm_extra_conf_vim_data = ['%:p']
+nnoremap <leader>jd :YcmCompleter GoTo<CR>
 
 " vim-json {{{2
 let g:vim_json_syntax_conceal = 0
 
 " vim-json {{{2
 let g:vim_json_syntax_conceal = 0
@@ -312,8 +360,17 @@ let g:vim_json_syntax_conceal = 0
 " vim-latex {{{2
 let g:tex_flavor='latex'
 let g:Tex_DefaultTargetFormat='pdf'
 " vim-latex {{{2
 let g:tex_flavor='latex'
 let g:Tex_DefaultTargetFormat='pdf'
+let g:Tex_MultipleCompileFormats='pdf'
+
+" " vim-viewdoc {{{2
+" let g:no_viewdoc_maps = 1
+" nnoremap K :call ViewDoc('doc', '<cword>')<cr>
 
 " functions {{{1
 
 " functions {{{1
+" auto source vimrc when saved
+autocmd bufwritepost vimrc source $MYVIMRC
+nmap <leader>v :tabedit $MYVIMRC<CR>
+
 " Convenient command to see the difference between the current buffer and the
 " file it was loaded from, thus the changes you made.
 " Only define it when not defined already.
 " Convenient command to see the difference between the current buffer and the
 " file it was loaded from, thus the changes you made.
 " Only define it when not defined already.