Files
yadm/.vimrc
2019-07-22 10:31:07 +02:00

530 lines
15 KiB
VimL

" Basic configuration
if &compatible
set nocompatible " Be iMproved
set modelines=0
endif
filetype plugin off
filetype off " required
" set the runtime path to include Vundle and initialize
set runtimepath+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
" Completion engines:
"Plugin 'Valloric/YouCompleteMe'
"Plugin 'zxqfl/tabnine-vim'
"Plugin 'lifepillar/vim-mucomplete'
"Plugin 'Shougo/neocomplete.vim'
"Plugin 'lyuts/vim-rtags'
"Plugin 'JBakamovic/cxxd-vim'
Plugin 'neoclide/coc.nvim'
" Mappings
"Plugin 'milkypostman/vim-togglelist' " Map of quickfix toggles
" Code development helpers
"Plugin 'rhysd/vim-clang-format'
"Plugin 'quark-zju/vim-cpp-auto-include'
Plugin 'tpope/vim-commentary' " Toggle C style comments with gc
"Plugin 'mnpk/vim-jira-complete'
"Plugin 'KabbAmine/zeavim.vim' " gz to open zeal
Plugin 'mbbill/undotree'
" Files switch, jump and grep-like tools
"Plugin 'ericcurtin/CurtineIncSw.vim' "Toggle .c .h files
"Plugin 'vim-scripts/a.vim' Curtine is the new a.vim
"Plugin 'scrooloose/nerdtree'
Plugin 'mileszs/ack.vim' " Ack integration
"Plugin 'jremmen/vim-ripgrep'
Plugin 'ctrlpvim/ctrlp.vim'
"Plugin 'junegunn/fzf.vim'
"Plugin 'fholgado/minibufexpl.vim
Plugin 'justinmk/vim-sneak' " easy movement
"Plugin 'easymotion/vim-easymotion'
Plugin 'ludovicchabant/vim-gutentags' "Auto generate tags
"Plugin 'andymass/vim-matchup' " Improve if-else matches
Plugin 'vim-scripts/taglist.vim'
" Git integration
"Plugin 'airblade/vim-gitgutter' " Mark edited lines
Plugin 'mhinz/vim-signify' " Mark edited lines - faster gitgutter
"Plugin 'rhysd/git-messenger.vim' " show git history
"Plugin 'tpope/vim-fugitive' " Git integration
" Syntax for random filetypes
"Plugin 'gabrielelana/vim-markdown'
Plugin 'kergoth/vim-bitbake' " Bitbake templates and syntax
"Plugin 'vim-scripts/DoxygenToolkit.vim' " Doxygen support
Plugin 'pboettch/vim-cmake-syntax'
" Colorschemes
Plugin 'flazz/vim-colorschemes' " lots of colorschemes
"Plugin 'octol/vim-cpp-enhanced-highlight'
"Plugin 'vim-scripts/CycleColor'
"Plugin 'jeaye/color_coded'
"Plugin 'thiagoalessio/rainbow_levels.vim'
" Other plugins (external tools, etc)
"Plugin 'Shougo/vimproc.vim'
Plugin 'junegunn/goyo.vim'
Plugin 'jez/vim-superman' "vman application
Plugin 'vimwiki/vimwiki'
"Plugin 'metakirby5/codi.vim' " live coding
"Plugin 'pelodelfuego/vim-swoop' " editing in parallel
"Plugin 'vim-airline/vim-airline'
Plugin 'mhinz/vim-startify'
call vundle#end() " required
" ========== Vim Basic Settings ============="
filetype plugin indent on
"TAB settings.
set tabstop=4
set shiftwidth=4
set softtabstop=4
set expandtab
" More Common Settings.
set encoding=utf-8
set scrolloff=10
set autoindent
set cino=l1,:0
set showmode
set showcmd
set hidden
"set visualbell
set nowrapscan
set cursorline
set ttyfast
set lazyredraw
set ruler
set backspace=eol,indent,start
set statusline=%<%f%h%m%r%=%b\ 0x%B\ \ %l,%c%V\ %P
set laststatus=2
"set relativenumber
set number
set norelativenumber
set shell=/usr/local/bin/fish
set path+=**
if exists("+undofile")
if isdirectory($HOME . '/.vim/undo') == 0
:silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
endif
set undodir=~/.vim/undo/
set undofile
endif
if isdirectory($HOME . '/.vim/tags') == 0
:silent !mkdir -p ~/.vim/tags > /dev/null 2>&1
endif
let g:gutentags_cache_dir='~/.vim/tags'
"let g:gutentags_ctags_extra_args=['--fields=+l']
"Changing Leader Key
let mapleader = "\\"
" Make pasting done without any indentation break
set pastetoggle=<F3>
syntax on
"Control it with %/s///i - ignore and I - sens
"set ignorecase
set smartcase
" %s///g not needed
set gdefault
set incsearch
set showmatch
set matchtime=3
set hlsearch
nnoremap <leader><space> :noh<cr>
" Make Vim to handle long lines nicely.
set wrap
set textwidth=79
set formatoptions=cqrnb1j
nnoremap j gj
nnoremap k gk
" Get Rid of stupid Goddamned help keys
inoremap <F1> <ESC>
nnoremap <F1> <ESC>
vnoremap <F1> <ESC>
" Map : to ; also in command mode.
"nnoremap ; :
" Reselect visual block after incrementing/decrementing
vnoremap <c-a> <c-a>gv
vnoremap <c-x> <c-x>gv
" Set vim to save the file on focus out
"au FocusLost * :wa
" leader Command to remove white space from a file
""nnoremap <leader>W :%s/\s\+$//<cr>:let @/=''<CR>
" Re-hardwrap Paragraph
nnoremap <leader>q gqip
" leader v Select just pasted text
"nnoremap <leader>v V`]
" jj For Quicker Escaping between normal and editing mode
inoremap jj <ESC>
inoremap jk <ESC>
" Resize Split When the window is resized
au VimResized * :wincmd =
" Wildmenu completion
set wildmenu
set wildmode=list:longest
set wildignore+=.hg,.git,.svn " Version Controls"
set wildignore+=*.aux,*.out,*.toc "Latex Indermediate files"
set wildignore+=*.jpg,*.bmp,*.gif,*.png,*.jpeg "Binary Imgs"
set wildignore+=*.o,*.obj,*.exe,*.dll,*.manifest "Compiled Object files"
set wildignore+=*.spl "Compiled spelling world list"
set wildignore+=*.sw? "Vim swap files"
set wildignore+=*.DS_Store "OSX SHIT"
set wildignore+=*.luac "Lua byte code"
set wildignore+=migrations "Django migrations"
set wildignore+=*.pyc "Python Object codes"
set wildignore+=*.orig "Merge resolution files"
match Error /\s\+$\|DUPA\c/
" Removing scrollbars
if has("gui_running")
set guitablabel=%-0.12t%M
set guioptions-=T
set guioptions-=r
set guioptions-=L
set guioptions+=a
set guioptions-=m
colorscheme molokai
set listchars=tab:▸\ ,eol" Invisibles using the Textmate style
else
colorscheme badwolf
set background=dark
" To show special characters in Vim
set listchars=tab:▸\ ,trail
set list
hi clear SpellBad
hi SpellBad cterm=underline
endif
if &term =~ '256color'
" Disable Background Color Erase (BCE) so that color schemes
" work properly when Vim is used inside tmux and GNU screen.
set t_ut=
endif
" ========== Plugin Settings =========="
" Mini Buffer some settigns."
"let g:miniBufExplMapWindowNavVim = 1
"let g:miniBufExplMapWindowNavArrows = 1
"let g:miniBufExplMapCTabSwitchBufs = 1
"let g:miniBufExplModSelTarget = 1
"let g:miniBufExplStatusLineText = ''
" Tagbar key bindings."
"nmap <leader>t :TlistToggle<cr>
nnoremap <leader>2 <esc>:set tabstop=2 softtabstop=2 shiftwidth=2<cr>
nnoremap <leader>4 <esc>:set tabstop=4 softtabstop=4 shiftwidth=4<cr>
nnoremap <leader>8 <esc>:set tabstop=8 softtabstop=8 shiftwidth=8<cr>
"Full line:
"set colorcolumn=120
"call matchadd('ColorColumn', '\%80v', 100)
if has("autocmd")
"restore cursor position
autocmd BufReadPost * if line("'\"") > 0|if line("'\"") <= line("$")|exe("norm '\"")|else|exe "norm $"|endif|endif
autocmd FileType helpfile set nonumber
autocmd WinLeave * set nocursorline
autocmd WinEnter * set cursorline
"autocmd FileType tex set textwidth=79
"autocmd FileType c,cpp,hpp,h :RainbowLevelsOn
endif
"hi! link RainbowLevel0 Constant
"hi! link RainbowLevel1 Type
"hi! link RainbowLevel2 Function
"hi! link RainbowLevel3 String
"hi! link RainbowLevel4 PreProc
"hi! link RainbowLevel5 Statement
"hi! link RainbowLevel6 Identifier
"hi! link RainbowLevel7 Normal
"hi! link RainbowLevel8 Comment
"
if has("cscope")
"use both cscope and ctags
"set cscopetag
" change this to 1 to search ctags DBs first
set csto=0
set cst
set nocsverb
" add any database in current directory
if filereadable("cscope.out")
cs add cscope.out
" else add database pointed to by environment
elseif $CSCOPE_DB != ""
cs add $CSCOPE_DB
endif
" 's' symbol: find all references to the token under cursor
" 'g' global: find global definition(s) of the token under cursor
" 'c' calls: find all calls to the function name under cursor
" 't' text: find all instances of the text under cursor
" 'e' egrep: egrep search for the word under cursor
" 'f' file: open the filename under cursor
" 'i' includes: find files that include the filename under cursor
" 'd' called: find functions that function under cursor calls
" Using 'CTRL-\' then a search type makes the vim window
" "shell-out", with search results displayed on the bottom
nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>g :cs find g <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>c :cs find c <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>t :cs find t <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>e :cs find e <C-R>=expand("<cword>")<CR><CR>
nmap <C-\>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
nmap <C-\>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
nmap <C-\>d :cs find d <C-R>=expand("<cword>")<CR><CR>
"" Using 'CTRL-spacebar' then a search type makes the vim window
"" split horizontally, with search result displayed in
"" the new window.
" nmap <C-[>s :scs find s <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[>g :scs find g <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[>c :scs find c <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[>t :scs find t <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[>e :scs find e <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[>f :scs find f <C-R>=expand("<cfile>")<CR><CR>
" nmap <C-[>i :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
" nmap <C-[>d :scs find d <C-R>=expand("<cword>")<CR><CR>
"" Hitting CTRL-space *twice* before the search type does a vertical
"" split instead of a horizontal one
" nmap <C-[><C-[>s :vert scs find s <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[><C-[>g :vert scs find g <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[><C-[>c :vert scs find c <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[><C-[>t :vert scs find t <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[><C-[>e :vert scs find e <C-R>=expand("<cword>")<CR><CR>
" nmap <C-[><C-[>i :vert scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
" nmap <C-[><C-[>d :vert scs find d <C-R>=expand("<cword>")<CR><CR>
endif
nnoremap yg :YcmCompleter GoTo<CR>
nnoremap yf :YcmCompleter FixIt<CR>
nnoremap yd :YcmCompleter GetDoc<CR>
nnoremap yt :YcmCompleter GetType<CR>
nnoremap yp :YcmCompleter GetParent<CR>
let g:ycm_confirm_extra_conf = 0
let g:ycm_warning_symbol = '>'
let g:ycm_complete_in_strings = 0
"let g:ycm_server_log_level = 'debug'
"let g:ycm_server_use_vim_stdout = 1
let g:ycm_collect_identifiers_from_tags_files = 1
let g:ycm_enable_diagnostic_highlighting = 0
let g:ycm_autoclose_preview_window_after_completion = 0
let g:ycm_autoclose_preview_window_after_insertion = 1
let g:ycm_min_num_of_chars_for_completion = 99
map <F12> :colorscheme random<CR>
function! FoldFormat()
let foldsize = (v:foldend - v:foldstart)
return getline(v:foldstart)."\t\t\t(".foldsize."\tmore lines)"
endfunction
" Folding - space one line, home,end globally increase/decrease
set foldenable
set foldlevelstart=3
set foldnestmax=5
set foldtext=FoldFormat()
set fillchars=fold:\
set foldmethod=syntax
nnoremap <space> za
nnoremap <Home> zm
nnoremap <End> zr
nnoremap <leader>s :mksession!<CR>
" Jira config
let b:jiracomplete_url = 'http://192.168.1.49:8080/jira'
let b:jiracomplete_username = 'r.kmiec'
let b:jiracomplete_password = 'password'
" We can also use v:val.menu
let b:jiracomplete_format = '"[". v:val.abbr. "]"'
set updatetime=4000
" From C.vim:
" ADDITIONAL MAPPING : complete a classical C comment: '/*' => '/* | */'
"vnoremap <buffer> /* s/*<Space><Space>*/<Left><Left><Left><Esc>p
" additional mapping : complete a classical C multi-line comment:
"inoremap <buffer> /*<CR> /*<CR><CR>/<Esc>kA<Space>
" additional mapping : {<CR> always opens a block
"inoremap <buffer> {<CR> {<CR>}<Esc>O
"vnoremap <buffer> {<CR> S{<CR>}<Esc>Pk=iB
inoremap :w<CR> <Esc>:w<CR>i
"nnoremap <F2> :silent ! plantuml %:p && eog -g %:p:r.png &<CR>:redraw!<CR>
" ctrlp configuration
let g:ctrlp_map = '<c-p>'
let g:ctrlp_cmd = 'CtrlPLastMode'
let g:ctrlp_user_command = 'ack --cpp --cc -f %s'
let g:ctrlp_working_path_mode = 'rw'
tnoremap <Esc> <C-W><C-W>
set spell
set runtimepath+=/usr/share/vim/vimfiles
set spelllang=en,pl
" Dictionary path, from which the words are being looked up.
set dictionary+=/usr/share/dict/words
" from vimconfig.com
"set showbreak=++
"let g:rtagsRcCmd='rtags-rc'
set timeoutlen=1000
set ttimeout
set ttimeoutlen=0
let g:matchparen_timeout = 2
let g:matchparen_insert_timeout = 2
" Mapping to NERDTree
"nnoremap <C-n> :NERDTreeToggle<cr>
"let NERDTreeIgnore=['\.vim$', '\~$', '\.pyc$']
let g:netrw_banner=0
let g:netrw_wisize=20
let g:netrw_liststyle=3
let g:netrw_lolcalrmdir='rm -r'
nnoremap <leader>n :Lexplore<CR>
" taken from Damian Conway
nnoremap <silent> n n:call HLNext(0.2)<cr>
nnoremap <silent> N N:call HLNext(0.2)<cr>
function! HLNext(blinktime)
let [bufnum, lnum, col, off] = getpos('.')
let matchlen = strlen(matchstr(strpart(getline('.'), col - 1), @/))
let target_pat = '\c\%#'.@/
let blinks = 1
for n in range(1, blinks)
let red = matchadd('WarningMsg', target_pat, 101)
redraw
exec 'sleep ' . float2nr(a:blinktime / (2*blinks) * 1000) . 'm'
call matchdelete(red)
redraw
exec 'sleep ' . float2nr(a:blinktime / (2*blinks) * 1000) . 'm'
endfor
endfunction
nnoremap S :%s//g<LEFT><LEFT>
xnoremap S :s//g<LEFT><LEFT>
xmap <BS> x
function! FindAlternate()
let l:ext = 'h'
let l:curr_ext = expand('%:e')
if (l:curr_ext == 'c')
let l:ext = 'h'
elseif (l:curr_ext == 'cpp')
let l:ext = 'h'
elseif (l:curr_ext == 'h')
let l:ext = 'cpp'
elseif (l:curr_ext == 'hpp')
let l:ext = 'cpp'
endif
let l:file = expand('%:t:r') . '.' . l:ext
:exec 'find ' . l:file
endfunction
nnoremap <F6> :call FindAlternate()<CR>
"let g:alternateSearchPath="sfr:../source,sfr:../src,sfr:../include,sfr:../inc,sfr:./Source,sfr:.."
"map <F6> :call CurtineIncSw()<CR>
packadd termdebug
let g:startify_custom_header = ''
"set shortmess+=c
"inoremap <silent><expr> <c-space> coc#refresh()
"set signcolumn=yes
"set cmdheight=2
"inoremap <silent><expr> <TAB>
" \ pumvisible() ? "\<C-n>" :
" \ <SID>check_back_space() ? "\<TAB>" :
" \ coc#refresh()
"inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"
"
"function! s:check_back_space() abort
" let col = col('.') - 1
" return !col || getline('.')[col - 1] =~# '\s'
"endfunction
"
"inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>"
"
"nmap <silent> gd <Plug>(coc-definition)
"nmap <silent> gy <Plug>(coc-type-definition)
"nmap <silent> gi <Plug>(coc-implementation)
"nmap <silent> gr <Plug>(coc-references)
"
"nnoremap <silent> K :call <SID>show_documentation()<CR>
"
"function! s:show_documentation()
" if (index(['vim','help'], &filetype) >= 0)
" execute 'h '.expand('<cword>')
" else
" call CocAction('doHover')
" endif
"endfunction
"
"autocmd CursorHold * silent call CocActionAsync('highlight')
"xmap <leader>f <Plug>(coc-format-selected)
"nmap <leader>f <Plug>(coc-format-selected)
"
"" Show all diagnostics
"nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr>
"" Manage extensions
"nnoremap <silent> <space>e :<C-u>CocList extensions<cr>
"" Show commands
"nnoremap <silent> <space>c :<C-u>CocList commands<cr>
"" Find symbol of current document
"nnoremap <silent> <space>o :<C-u>CocList outline<cr>
"" Search workspace symbols
"nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr>
"" Do default action for next item.
"nnoremap <silent> <space>j :<C-u>CocNext<CR>
"" Do default action for previous item.
"nnoremap <silent> <space>k :<C-u>CocPrev<CR>
"" Resume latest coc list
"nnoremap <silent> <space>p :<C-u>CocListResume<CR>