X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/420692d9f97308e7a016fa6bf4ad6988f1280d33..4b1d62d1350c90c23d9d365ffcb1ecdf1f088e3d:/vim/vimrc diff --git a/vim/vimrc b/vim/vimrc index 111300a..ab60260 100644 --- a/vim/vimrc +++ b/vim/vimrc @@ -3,34 +3,63 @@ " Author: Samir Benmendil " -" use xdg -set runtimepath=$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after - " bundles {{{1 filetype off -set rtp+=$XDG_DATA_HOME/vim/vundle +set runtimepath& " reset rtp +autocmd! + +set runtimepath+=$XDG_DATA_HOME/vim/vundle call vundle#rc('$XDG_DATA_HOME/vim') -Bundle 'gmarik/vundle' -Bundle 'bling/vim-airline' -Bundle 'ctrlp.vim' -Bundle 'fugitive.vim' -Bundle 'Gundo' -Bundle 'The-NERD-tree' -Bundle 'surround.vim' -Bundle 'Syntastic' -Bundle 'Tagbar' -Bundle 'tComment' -Bundle 'Valloric/YouCompleteMe' -Bundle 'elzr/vim-json' +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 -" 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 and / to be +map +nnoremap :make " use leader-n to unhighlight search nmap n :silent nohl @@ -38,32 +67,25 @@ nmap n :silent nohl nmap # :%s:/::gn " center cursor after search nnoremap n nzz + " disable arrows -inoremap -inoremap -inoremap +noremap +noremap +noremap +noremap +inoremap +inoremap +inoremap inoremap -noremap -noremap -noremap -noremap - -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 +cnoremap +cnoremap +cnoremap +cnoremap +cnoremap +cnoremap +cnoremap -set number " show the line number for each line -set relativenumber " show the relative line number for each line " toggle relativenumber nnoremap u :exe "set relativenumber!" @@ -81,49 +103,130 @@ if has("autocmd") \ endif endif - -" syntax, highlighting and spelling {{{1 -set background=dark " Dark background, d'uh! +colorscheme badwolf syntax on -set spelllang=en_gb " list of accepted languages -set dictionary=spell " list of dictionary files for keyword completion -" toggle spell-checking -map :set nospell!:set nospell? +" Spell Check http://tex.stackexchange.com/a/52932 +let b:myLang=0 +let g:myLangList=["en_gb","en_us","de","fr"] + +function! ToggleSpell() + execute "setlocal spell!" + if (&spell) + echo "setlocal spelllang=" g:myLangList[b:myLang] + endif +endfunction +nnoremap s :call ToggleSpell() + +function! SwitchSpell() + if (&spell) + let b:myLang=b:myLang+1 + if b:myLang>=len(g:myLangList) | let b:myLang=0 | endif + endif + execute "setlocal spell spelllang=".get(g:myLangList, b:myLang) + echo "setlocal spelllang=" g:myLangList[b:myLang] +endfunction +nnoremap S :call SwitchSpell() + +" fix spelling with first choice +nnoremap f 1z= if has("autocmd") au Filetype * \ if &omnifunc == "" | setl omnifunc=syntaxcomplete#Complete | endif endif -" multiple windows {{{1 +map :ls:b + +nmap w +nmap W + + +"xterm mouse with middleclick paste +nnoremap i +vnoremap s + +" fix legacy vi inconsistency +map Y y$ + +" allow repeat operator on visual +vnoremap . :normal . + +" add line without changing position or leaving mode +noremap o :set pastem`o``:set nopaste +noremap O :set pastem`O``:set nopaste + +" Don't use Ex mode, use Q for formatting +map Q gq + +" allow undoing in insert-mode +inoremap u +inoremap u + +nmap b :set expandtab tabstop=4 shiftwidth=4 softtabstop=4 +nmap B :set expandtab tabstop=8 shiftwidth=8 softtabstop=4 +nmap M :set noexpandtab tabstop=8 softtabstop=4 shiftwidth=4 +nmap m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2 + +" space will toggle current fold in normal mode +nnoremap za +" create folds around visual selection +vnoremap 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 -nmap j -nmap k -nmap h -nmap l - -map :ls:b - -" using the mouse {{{1 +" using the mouse {{{2 set mouse=rnv " list of flags for using the mouse set ttymouse=xterm " type of mouse -"xterm mouse with middleclick paste -nnoremap i -vnoremap s - -" 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 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. @@ -136,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 -" 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 "\" - else - return "\" -endif -endfunction -inoremap =InsertTabWrapper() -inoremap - -" fix legacy vi inconsistency -map Y y$ - -" allow repeat operator on visual -vnoremap . :normal . - -" add line without changing position or leaving mode -map o :set pastem`o``:set nopaste -map O :set pastem`O``:set nopaste - -" Don't use Ex mode, use Q for formatting -map Q gq - -" allow undoing in insert-mode -inoremap u -inoremap u - -" tabs and indent {{{1 +" tabs and indent {{{2 set shiftwidth=4 " number of spaces used for each step of (auto)indent set smarttab " a in an indent inserts 'shiftwidth' spaces set softtabstop=4 " if non-zero, number of spaces to insert for a @@ -177,26 +251,14 @@ set cinoptions=l1,c4,(0,U1,w1,m1,j1,J1 set pastetoggle= " key sequence to toggle paste mode -nmap b :set expandtab tabstop=4 shiftwidth=4 softtabstop=4 -nmap B :set expandtab tabstop=8 shiftwidth=8 softtabstop=4 -nmap M :set noexpandtab tabstop=8 softtabstop=4 shiftwidth=4 -nmap m :set expandtab tabstop=2 shiftwidth=2 softtabstop=2 - -" folding {{{1 +" folding {{{2 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 @=(foldlevel('.')?'za':"\") -" create folds around visual selection -vnoremap zf - " 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 @@ -206,36 +268,50 @@ set undodir=$XDG_CACHE_HOME/vim 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 -" command line editing {{{1 +" command line editing {{{2 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 -" various {{{1 +" various {{{2 set virtualedit=block " let cursor move past last char in 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 +" ag {{{2 +let g:AgSmartCase = 1 +nnoremap ag yiw:Ag " +vnoremap ag y:Ag " + " 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_powerline_fonts = 1 + +" GoldenView {{{2 +"let g:goldenview__enable_default_mapping = 0 +"nmap GoldenViewSplit +"nmap GoldenViewNext +"nmap GoldenViewPrevious +"nmap GoldenViewSwitchMain +"nmap GoldenViewPrevious " Gundo {{{2 nnoremap :GundoToggle " fugitive {{{2 nmap dd :tab split \| Gdiff \| wincmd h +" delete fugitive buffers when closed +autocmd BufReadPost fugitive://* set bufhidden=delete + +nnoremap gs :Gstatus +nnoremap gd :Gdiff +nnoremap gc :tab Gcommit -v +nnoremap gw :Gwrite " NERDTree {{{2 " open/close NERDTree with \e @@ -243,8 +319,6 @@ nmap e :NERDTreeToggle nmap :NERDTreeToggle " to open files/dirs let NERDTreeMapActivateNode='' -" open NERDTree if no files were selected -autocmd vimenter * if !argc() | NERDTree | endif " close vim if only NERDTree is open autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif @@ -258,7 +332,7 @@ let g:syntastic_always_populate_loc_list=1 nmap y :SyntasticCheck if ! &diff - let g:syntastic_check_on_open=1 + let g:syntastic_check_on_open=1 endif " tagbar {{{2 @@ -269,13 +343,34 @@ let g:tagbar_autoshowtag = 1 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 -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 jd :YcmCompleter GoTo " vim-json {{{2 let g:vim_json_syntax_conceal = 0 +" 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', '') + " functions {{{1 +" auto source vimrc when saved +autocmd bufwritepost vimrc source $MYVIMRC +nmap v :tabedit $MYVIMRC + " 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.