" Maintainer: Patrick Auernig " VIM Version: NVIM 0.1.5 " Source: https://gitlab.com/valeth/vim-config " Mirror: https://github.com/valeth/vim-config " ,----------------------, " | NVim Directories | " '----------------------' {{{ let g:vim_config_home = split(&rtp, ',', 0)[0] if exists('$XDG_CACHE_HOME') let g:vim_cache_home = expand('$XDG_CACHE_HOME/') . v:progname else let g:vim_cache_home = expand('$HOME/.local/cache/') . v:progname endif if exists('$XDG_DATA_HOME') let g:vim_data_home = expand('$XDG_DATA_HOME/') . v:progname else let g:vim_data_home = expand('$HOME/.local/share/') . v:progname endif " }}} " ,----------------------, " | Settings | " '----------------------' {{{ set autochdir set autowriteall set backupdir-=. set breakindent set breakindentopt=sbr set clipboard+=unnamed,unnamedplus set completeopt=longest,menuone,preview set confirm set foldcolumn=1 set foldlevel=99 set foldmethod=syntax set foldtext=myfold#text() set gdefault set grepprg=grep\ -nH\ $* set hidden set ignorecase set list set listchars=tab:»\ ,trail:◆,extends:❯,precedes:❮,eol:↲,nbsp:· set matchtime=3 set noshowmode set noswapfile set notimeout set number set ruler set scrolloff=3 set shell=sh " because vim's system function is shit set showmatch set showbreak=↳ set shortmess=aoOtTI set sidescrolloff=5 set smartcase set smartindent set splitbelow set splitright set synmaxcol=300 set timeoutlen=50 set ttimeout set undofile set virtualedit+=block set visualbell t_vb= set wildignore+=.git set wildignore+=*.bak,*.old,*.swp,*~ set wildignore+=*.o,*.hi set wildignore+=*.pyc,*.class set wildignore+=*.pdf,*.aux set wildignore+=*.png,*.jpg set wildmode=list:longest,full " }}} " ,----------------------, " | Plugins | " '----------------------' {{{ call plug#begin(g:vim_data_home . '/plugins') " Autocomplete function! DoRemote(arg) UpdateRemotePlugins endfunction let g:deoplete#enable_at_startup = 1 Plug 'Shougo/vimproc.vim', { 'do': 'make' } Plug 'Shougo/deoplete.nvim', { 'do': function('DoRemote') } Plug 'Shougo/neco-syntax' Plug 'Shougo/context_filetype.vim' Plug 'Shougo/neoinclude.vim', { 'for': ['c', 'cpp'] } Plug 'Rip-Rip/clang_complete', { 'for': ['c', 'cpp'] } Plug 'zchee/deoplete-jedi', { 'for': 'python' } " Navigation Plug 'kien/ctrlp.vim' Plug 'Konfekt/FastFold' Plug 'majutsushi/tagbar' Plug 'christoomey/vim-tmux-navigator' let g:tmux_navigator_no_mappings = 1 Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif autocmd bufenter * if exists("b:NERDTree") | setlocal nonumber norelativenumber | endif Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': 'NERDTreeToggle' } let g:NERDTreeIndicatorMapCustom = { \ "Modified" : "~", \ "Staged" : "+", \ "Untracked" : "*", \ "Renamed" : ">", \ "Unmerged" : "=", \ "Deleted" : "-", \ "Dirty" : "!", \ "Unknown" : "?" \ } " Version Control "Plug 'tpope/vim-fugitive' Plug 'airblade/vim-gitgutter' " LaTeX Plug 'WChargin/vim-latexsuite', { 'for': ['tex', 'latex'] } let g:tex_flavor = "latex" let g:tex_fold_enabled = 1 let g:Imap_UsePlaceHolders = 0 let g:Tex_ViewRule_dvi = "" let g:Tex_ViewRule_ps = "" let g:Tex_ViewRule_pdf = "" let g:Tex_ViewRuleComplete_dvi = "pgrep okular.*$* || xdg-open &" let g:Tex_ViewRuleComplete_ps = "" let g:Tex_ViewRuleComplete_pdf = "pgrep okular.*$* || xdg-open &" let g:Tex_DefaultTargetFormat = "pdf" " Pandoc Plug 'vim-pandoc/vim-pandoc' Plug 'vim-pandoc/vim-pandoc-syntax' let g:pandoc#filetypes#handles = ['markdown', 'pandoc'] let g:pandoc#filetypes#pandoc_markdown = 1 let g:pandoc#spell#enabled = 0 let g:pandoc#syntax#conceal#use = 0 let g:pandoc#folding#fdc = &fdc " Snippets Plug 'SirVer/ultisnips' Plug 'honza/vim-snippets' " Syntax "Plug 'vim-scripts/fish-syntax' Plug 'dag/vim-fish' Plug 'valeth/sprak.vim', { 'for': 'sprak' } Plug 'sheerun/vim-polyglot' Plug 'Matt-Deacalion/vim-systemd-syntax', { 'for': 'systemd' } " Haskell Plug 'eagletmt/neco-ghc', { 'for': 'haskell' } " Rust Plug 'rust-lang/rust.vim', { 'for': 'rust' } Plug 'racer-rust/vim-racer', { 'for': 'rust' } " JavaScript Plug 'steelsojka/deoplete-flow', { 'for': 'javascript' } "Plug 'dsawardekar/ember.vim' ", { 'for': 'javascript' } " Ruby Plug 'vim-ruby/vim-ruby', { 'for': 'ruby' } Plug 'ngmy/vim-rubocop', { 'for': 'ruby' } Plug 'hallison/vim-rdoc', { 'for': 'ruby' } "Plug 'fishbullet/deoplete-ruby', { 'for': 'ruby' } "Plug 'tpope/vim-bundler', { 'for': 'ruby' } "Plug 'nyangry/rsense.vim', { 'for': 'ruby' } "Plug 'tpope/vim-rails', { 'for': 'ruby' } "Plug 'dsawardekar/portkey' ", { 'for': ['ruby', 'javascript'] } " Misc Plug 'bling/vim-airline' let g:airline#extensions#tabline#enabled = 1 let g:airline_theme = 'dark' let g:airline_powerline_fonts = 1 "Plug 'mtth/scratch.vim', { 'on': 'Scratch' } "let g:scratch_persistence_file = g:vim_data_home . "/scratch.vim" Plug 'scrooloose/syntastic' let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 0 let g:syntastic_auto_loc_list = 1 let g:syntastic_loc_list_height = 5 let g:syntastic_c_check_header = 1 let g:syntastic_cpp_remove_include_errors = 1 let g:syntastic_cpp_check_header = 1 let g:syntastic_cpp_auto_refresh_includes = 1 let g:syntastic_tex_checkers = ["false"] let g:syntastic_error_symbol = '☓' let g:syntastic_warning_symbol = '⚠' "Plug 'vim-scripts/gnupg' Plug 'editorconfig/editorconfig-vim' Plug 'tpope/vim-unimpaired' Plug 'tpope/vim-surround' Plug 'tpope/vim-commentary' Plug 'vim-scripts/Tail-Bundle' Plug 'Yggdroot/indentLine' let g:indentLine_char = '┆' " Dragvisuals Plug 'tsaleh/vim-align' Plug 'taku-o/vim-vis' Plug 'clones/vim-cecutil' Plug 'atweiden/vim-dragvisuals' vmap DVB_Drag('left') vmap DVB_Drag('right') vmap DVB_Drag('down') vmap DVB_Drag('up') vmap DVB_Duplicate() " Autopairs Plug 'cohama/lexima.vim' "Plug 'Raimondi/delimitMate' " Colorschemes "Plug 'tomasr/molokai' Plug 'junegunn/seoul256.vim' "Plug 'NLKNguyen/papercolor-theme' "Plug 'chriskempson/tomorrow-theme' call plug#end() " }}} " ,----------------------, " | Keymappings | " '----------------------' {{{ let g:mapleader = "," let g:maplocalleader = "\\" " Commands> command! Wq wq command! WQ wq command! Q q command! W w " Plugins nnoremap :CtrlPBuffer inoremap :CtrlPBuffer nnoremap :CtrlP inoremap :CtrlP nnoremap Tex_Help inoremap Tex_Help nnoremap IMAP_JumpForward vnoremap IMAP_JumpForward "noremap :w :!pdflatex -shell-escape "%" && { pgrep ".*%:p || xdg-open %:p:r.pdf } noremap nt :NERDTreeToggle vnoremap nt :NERDTreeToggle nnoremap syn :SyntasticToggleMode vnoremap syn :SyntasticToggleMode nnoremap tag :TagbarToggle vnoremap tag :TagbarToggle nnoremap :TmuxNavigateLeft nnoremap :TmuxNavigateDown nnoremap :TmuxNavigateUp nnoremap :TmuxNavigateRight nnoremap :TmuxNavigatePrevious " Disabled nnoremap inoremap nnoremap noremap noremap noremap noremap noremap ^ noremap $ " Other noremap :noh nnoremap U :redo nnoremap vl :setlocal cursorline! nnoremap vc :setlocal cursorcolumn! nnoremap ve :setlocal colorcolumn=81 nnoremap vn :setlocal colorcolumn=0 nnoremap tcs :call ToggleColorscheme() nnoremap Y y$ nnoremap j gj nnoremap k gk nnoremap fmt gg=G`` nnoremap gr gd[{V%::s////g nnoremap gR gD:%s////g nnoremap th :tabfirst nnoremap tj :tabnext nnoremap tk :tabprev nnoremap tl :tablast nnoremap tn :tabnew nnoremap tq :tabclose nnoremap H ^ nnoremap L $ vnoremap L g_ inoremap I inoremap A cnoremap cnoremap noremap j gj noremap k gk noremap gj j noremap gk k nnoremap gC `. nnoremap n nzzzv nnoremap N Nzzzv nnoremap g; g;zz nnoremap g, g,zz nnoremap zz nnoremap il :set invlist vnoremap il :set invlist inoremap :%s/ nnoremap :%s/ vnoremap :s/ nnoremap / /\v vnoremap / /\v inoremap jk inoremap jK inoremap Jk inoremap JK vnoremap < >gv cnoremap w! w !sudo tee % >/dev/null tnoremap tnoremap " }}} " ,----------------------, " | Autocommands | " '----------------------' {{{ "augroup LineReturn " au! " au BufReadPost * " \ if line("'\"") > 0 && line("'\"") <= line("$") | " \ execute 'normal! g`"zvzz' | " \ endif "augroup END augroup ToggleLineNumbers au! au VimEnter,WinEnter,InsertLeave * setlocal relativenumber au WinLeave,InsertEnter * setlocal norelativenumber augroup END augroup CursorHighlight au! au VimEnter,WinEnter,BufWinEnter * setlocal cursorline au WinLeave * setlocal nocursorline "au VimEnter,WinEnter,BufWinEnter * setlocal cursorcolumn "au WinLeave * setlocal nocursorcolumn au VimEnter,WinEnter,BufWinEnter * setlocal colorcolumn=+3 au WinLeave * setlocal colorcolumn=0 augroup END " reload initrc "au BufWritePost $MYVIMRC source $MYVIMRC " save automatically autocmd FocusLost * :silent! wa " keep splits equal on terminal resize autocmd VimResized * :wincmd = autocmd BufWritePre * %s/\s\+$//e augroup Trailing au! au InsertEnter * :set invlist au InsertLeave * :set invlist augroup END " }}} " ,----------------------, " | Colorscheme | " '----------------------' {{{ function! ToggleColorscheme() if g:colors_name == 'Tomorrow' colorscheme seoul256 else colorscheme Tomorrow endif AirlineRefresh endfunction let g:seoul256_background = 237 let g:seoul256_light_background = 254 colorscheme seoul256 " }}} " ,----------------------, " | Other | " '----------------------' {{{ "highlight ColorColumn ctermbg=red call matchadd('ColorColumn', '\%81v', 100) " }}}