" try not to put any lines in your vimrc that you don't understand :) set nocompatible filetype off "required filetype plugin on " required inoremap pumvisible() ? "\" : "\" " 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 " 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' 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 'junegunn/fzf.vim' Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'justmao945/vim-clang' Plug 'tpope/vim-surround' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-repeat' Plug 'gorodinskiy/vim-coloresque' Plug 'Yggdroot/indentLine' Plug 'cespare/vim-toml' Plug 'preservim/nerdcommenter' Plug 'preservim/nerdtree' Plug 'Xuyuanp/nerdtree-git-plugin' Plug 'mfukar/robotframework-vim' Plug 'roxma/nvim-yarp' Plug 'roxma/vim-hug-neovim-rpc' Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' } Plug 'vim-syntastic/syntastic' call plug#end() 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_section_z = airline#section#create(['windowswap', '%3p%% ', 'linenr', ' :%3v']) let g:airline_theme = 'onedark' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#formatter = 'unique_tail' let g:NERDTreeDirArrowExpandable = '▸' let g:NERDTreeDirArrowCollapsible = '▾' 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 = 'xreader' let g:livepreview_engine = 'pdflatex' let g:vimtex_compiler_progname = 'pdflatex' 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': '*/' } } "let g:indentLine_setColors = 0 let g:indentLine_char_list = ['|', '¦', '┆', '┊', ':'] 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'] 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 if !has('nvim') if exists('$TMUX') let &t_SI = "\Ptmux;\\e[2 q\\\" let &t_SR = "\Ptmux;\\e[4 q\\\" let &t_EI = "\Ptmux;\\e[2 q\\\" else let &t_SI = "\e[6 q" let &t_SR = "\e[4 q" let &t_EI = "\e[2 q" endif endif command! W execute 'silent w !sudo tee % >/dev/null' | edit! command! -nargs=* Make write | make! | cwindow " open a terminal in $PWD nnoremap tt :terminal " toggle showing whitespace noremap :set list! " make shortcut nnoremap :make! " NERDTree nmap nt :NERDTreeToggle vmap gb :!git blame % -L=line("'<") ,=line("'>") nmap gb :!git blame % " ------ autocmd ------ " 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=2 tabstop=2 au FileType html setlocal shiftwidth=2 tabstop=2 au BufNewFile,BufRead *.js \ setlocal shiftwidth=2 tabstop=2 softtabstop=2 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 \ textwidth=79 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 " ------ adv maps ------ " strip trailing whitespace, ss (strip space) nnoremap ss \ :let b:_p = getpos(".") \ let b:_s = (@/ != '') ? @/ : '' \ %s/\s\+$//e \ let @/ = b:_s \ nohlsearch \ unlet b:_s \ call setpos('.', b:_p) \ unlet b:_p 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%.%# autocmd BufNewFile,BufRead svn-commit.*tmp :0r $SVN_COMMIT_TEMPLATE 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 scrolloff=3 " 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 errorbells " bells in terminal 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 dracula " new fav highlighting set mouse=a " enable mouse in n,v,i,c,h modes set laststatus=2 " show powerline status bar set t_Co=256