dotfiles/.vim/vimrc
surtur cbb464b1a8
fix: deoplete updating
* don't call nvim command
* enable at startup
2021-02-10 23:26:30 +01:00

314 lines
11 KiB
VimL

" try not to put any lines in your vimrc that you don't understand :)
set nocompatible
filetype off "required
filetype plugin on " required
" Enable heavy omni completion.
if !exists('g:neocomplete#sources#omni#input_patterns')
let g:neocomplete#sources#omni#input_patterns = {}
endif
if empty(glob('~/.vim/autoload/plug.vim'))
silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
endif
call plug#begin()
Plug 'drewtempelmeyer/palenight.vim', { 'as': 'palenight' }
Plug 'jacoborus/tender.vim'
Plug 'dracula/vim', { 'as': 'dracula' }
Plug 'lervag/vimtex', { 'for': 'tex' }
Plug 'xuhdev/vim-latex-live-preview', { 'for': 'tex' }
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'ctrlpvim/ctrlp.vim'
Plug 'justmao945/vim-clang'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-speeddating'
Plug 'tpope/vim-afterimage'
Plug 'tpope/vim-jdaddy'
Plug 'tpope/vim-unimpaired'
Plug 'tpope/vim-ragtag'
Plug 'gorodinskiy/vim-coloresque'
Plug 'lpinilla/vim-codepainter'
Plug 'rhysd/git-messenger.vim'
Plug 'Yggdroot/indentLine'
Plug 'cespare/vim-toml', { 'for': 'toml' }
Plug 'Glench/Vim-Jinja2-Syntax'
Plug 'preservim/nerdcommenter'
Plug 'preservim/nerdtree'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'mfukar/robotframework-vim', { 'for': 'robotframework' }
Plug 'roxma/nvim-yarp'
Plug 'roxma/vim-hug-neovim-rpc'
Plug 'Shougo/deoplete.nvim'
Plug 'vim-syntastic/syntastic'
Plug 'majutsushi/tagbar'
" Plug 'rust-lang/rust.vim', { 'for': 'rust' }
call plug#end()
let g:palenight_terminal_italics=1
let g:crystalline_theme = 'default'
let g:airline_powerline_fonts = 1
let g:Powerline_symbols = "fancy" " sth like this probably set as a default but won't hurt here
let g:airline_highlighting_cache = 1
" let g:airline_theme = 'dracula'
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#formatter = 'unique_tail'
let g:gitgutter_terminal_reports_focus=0
let g:gitgutter_async = 0
let g:gitgutter_sign_allow_clobber=0
let g:deoplete#enable_at_startup = 1
let g:deoplete#enable_ignore_case = 1
let g:livepreview_cursorhold_recompile = 0
let g:livepreview_previewer = 'evince'
let g:livepreview_engine = 'pdflatex -shell-escape -interaction=nonstopmode'
let g:vimtex_compiler_progname = 'pdflatex -shell-escape --interaction=nonstopmode'
let g:tex_flavor = 'latex'
" Add spaces after comment delimiters by default
let g:NERDSpaceDelims = 1
" Allow commenting and inverting empty lines (useful when commenting a region)
let g:NERDCommentEmptyLines = 1
" Enable trimming of trailing whitespace when uncommenting
let g:NERDTrimTrailingWhitespace = 1
"""" Enable NERDCommenterToggle to check all selected lines is commented or not
"""let g:NERDToggleCheckAllLines = 1
" Add your own custom formats or override the defaults
let g:NERDCustomDelimiters = { 'vim': { 'left': '"','right': '' }, 'c': { 'left': '/**','right': '*/' }, 'zsh': { 'left': '#','right': ''} }
let g:NERDTreeGitStatusWithFlags = 1
let g:indentLine_setColors = 1
let g:indentLine_char_list = ['|', '¦', '┆', '┊', ':']
let g:indentLine_conceallevel = 0
let g:git_messenger_close_on_cursor_moved = v:false
let g:git_messenger_always_into_popup = v:true
hi gitmessengerHash term=None guifg=#f0eaaa ctermfg=111
let g:syntastic_always_populate_loc_list = 0
let g:syntastic_auto_loc_list = 2
let g:syntastic_loc_list_height = 8
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_aggregate_errors = 1
let g:syntastic_id_checkers = 1
let g:syntastic_error_symbol = "✗"
let g:syntastic_warning_symbol = "⚠"
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_javascript_checkers = ['jsl']
" let g:syntastic_python_checkers = ['pylint-3']
let g:syntastic_python_checkers = ['flake8']
let g:syntastic_c_compiler = 'clang'
let g:syntastic_c_check_header = 1
let g:syntastic_c_auto_refresh_includes = 1
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_auto_refresh_includes = 1
let g:syntastic_c_cpplint_exec = 'cppcheck'
" change cursor shape for different editing modes, neovim does this by default
let &t_SI = "\e[6 q"
let &t_SR = "\e[4 q"
let &t_EI = "\e[2 q"
command! W execute 'silent w !sudo tee % >/dev/null' | edit!
command! -nargs=* Make write | make! <args> | cwindow
" open a terminal in $PWD
nnoremap <silent> <Leader>tt :terminal<CR>
" toggle showing whitespace
noremap <F5> :set list!<CR>
" make shortcut
nnoremap <F4> :make!<cr>
nnoremap <F8> :TagbarToggle<CR>
" NERDTree
nmap <Leader>nt :NERDTreeToggle<CR>
vmap gb :<C-U>!git blame % -L<C-R>=line("'<") <CR>,<C-R>=line("'>") <CR><CR>
nnoremap gb :!git blame %<CR>
nnoremap <silent> <Leader>ll :w! !pdflatex -shell-escape -interaction=nonstopmode $PWD/*.tex<CR><CR>
nnoremap <Leader>l :exec &conceallevel ? "set conceallevel=0" : "set conceallevel=1"<CR><CR>
" ------ wayland copy
xnoremap <silent>"+y y:call system("wl-copy", @")<cr>
nnoremap <silent>"+p :let @"=substitute(system("wl-paste --no-newline"), '<C-v><C-m>', '', 'g')<cr>p
nnoremap "*p :let @"=substitute(system("wl-paste --no-newline --primary"), '<C-v><C-m>', '', 'g')<cr>p
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<left>"
" ------ autocmd ------
" 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
" automatically open NERDTree if vim is open on it's own (argc() ==0 )
" autocmd StdinReadPre * let s:std_in=1
" autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
" Reload changes if file changed outside of vim requires autoread
augroup load_changed_file
autocmd!
autocmd FocusGained,BufEnter * if mode() !=? 'c' | checktime | endif
autocmd FileChangedShellPost * echo "Changes loaded from source file"
augroup END
" when quitting a file, save the cursor position
augroup save_cursor_position
autocmd!
autocmd BufReadPost * call setpos(".", getpos("'\""))
augroup END
" when not running in a console or a terminal that doesn't support 256 colors
" enable cursorline in the currently active window and disable it in inactive ones
if $DISPLAY !=? '' && &t_Co == 256
augroup cursorline
autocmd!
autocmd VimEnter,WinEnter,BufWinEnter * setlocal cursorline
autocmd WinLeave * setlocal nocursorline
augroup END
endif
" when entering insert mode, relative line
" numbers are turned off, leaving absolute line numbers turned on
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave * set number relativenumber
autocmd BufLeave,FocusLost,InsertEnter * set number norelativenumber
augroup END
hi clear CursorLine
augroup CLClear
autocmd! ColorScheme * hi clear CursorLine
augroup END
hi CursorLineNR cterm=bold
augroup CLNRSet
set cursorline
autocmd! ColorScheme * hi CursorLineNR cterm=bold
augroup END
" define indent-based folding, after loading a file switch to manual folding
augroup vimrc
au BufReadPre * setlocal foldmethod=indent
au BufWinEnter * if &fdm == 'indent' | setlocal foldmethod=manual | endif
augroup END
""" autosave and load views
au BufWinLeave ?* mkview
au BufWinEnter ?* silent loadview
au FileType xml setlocal shiftwidth=4 tabstop=4
au FileType html setlocal shiftwidth=4 tabstop=4
au BufNewFile,BufRead *.js
\ setlocal shiftwidth=4 tabstop=4 softtabstop=4 expandtab autoindent fileformat=unix
au FileType c setl ofu=ccomplete#CompleteCpp
au BufNewFile,BufRead *.py,*.pyw,*.pyx,?akefil*
\ setlocal tabstop=4 shiftwidth=4 noexpandtab autoindent
\ fileformat=unix
" Linux kernel style tabs
au BufNewFile,BufRead *.c,*.h,*.cpp
\ setlocal tabstop=8 shiftwidth=8 softtabstop=8 noexpandtab autoindent
\ textwidth=79 fileformat=unix
au BufNewFile,BufRead *.tex
\ setlocal tabstop=2 shiftwidth=2 softtabstop=2 expandtab autoindent
\ textwidth=79 fileformat=unix conceallevel=0
" ------ adv maps ------
" strip trailing whitespace, ss (strip space)
nnoremap <silent> <Leader>ss
\ :let b:_p = getpos(".") <Bar>
\ let b:_s = (@/ != '') ? @/ : '' <Bar>
\ %s/\s\+$//e <Bar>
\ let @/ = b:_s <Bar>
\ nohlsearch <Bar>
\ unlet b:_s <Bar>
\ call setpos('.', b:_p) <Bar>
\ unlet b:_p <CR>
match Todo /\s\+$/
set softtabstop=4
set tabstop=4
set shiftwidth=4
set expandtab
set smarttab
set errorformat+=%.%#PHP:\ %m\ \(in\ %f\ on\ line\ %l\)%.%#,
\%E%[0-9]%#.%m:%f?rev=%.%##L%l\ %.%#,%C%.%#
set tags=.tags;
set incsearch " incrimental search
set hlsearch " highlighting when searching
filetype indent plugin on
set autoindent
set backspace=2
set splitbelow splitright " splits open at bottom and right
set lazyredraw " don't redraw while executing macros (good performance config)
set listchars=trail:•,tab:>-
set list " show/hide tabs and EOL chars (hidden characters)
set confirm " ask confirmation like save before quit.
set wildmenu " Tab completion menu when using command mode
set wildmode=longest:longest,full
set scrolloff=5 " scroll offset, min lines above/below cursor
"set scrolljump=5 " jump 5 lines when running out of the screen - NO
set sidescroll=10 " minimum columns to scroll horizontally
set showcmd " show command status
set showmatch " flashes matching parenthese when cursor over the other one
set mat=2 " how many tenths of a second to blink when matching brackets
set noshowmode " show editing mode in status (-- INSERT --)
set ruler " show cursor position
set noerrorbells " bells in vim
set undolevels=1000 " number of undos stored
set viminfo='50,"50 " '=marks for x files, "=registers for x files
set nofoldenable
"set foldmethod=indent " indent based folding
set encoding=utf-8 " important for powerline besides others
set ignorecase " searches are case insensitive...
set smartcase " ... unless they contain at least one capital letter
set noscrollbind
set updatetime=1000
syntax enable
colo palenight " new fav highlighting
set conceallevel=0 " for jsons
set ttymouse=sgr " tmux mouse behaviour
set mouse=a " enable mouse in n,v,i,c,h modes
set laststatus=2 " show powerline status bar
set t_Co=256
set notermguicolors