let g:ycm_server_keep_logfiles = 1 let g:ycm_server_log_level = 'debug' set laststatus=2 set number set nocompatible " required filetype off " required " disable hidden buffers, i.e make vim behave like any other multi file editor set hidden set encoding=utf-8 set t_Co=256 set tabstop=4 " enable search highlighting set hlsearch " paste multiple times xnoremap p pgvy " set the leader key to space let mapleader = "\" " map close tab to ctrl + w nmap w :q nmap W :q! " split pane nmap vs :vs nmap hs :hs " set the runtime path to include Vundle and initialize set rtp+=~/.vim/bundle/Vundle.vim call vundle#begin() "latex plugin Plugin 'LaTeX-Suite-aka-Vim-LaTeX' " vim debugger plugin Plugin 'vim-vdebug/vdebug' " let Vundle manage Vundle, required Plugin 'gmarik/Vundle.vim' " simplefold plugin Plugin 'tmhedberg/SimpylFold' " python aut-ident plugin Plugin 'vim-scripts/indentpython.vim' Plugin 'Yggdroot/indentLine' " python autocomplete plugin Bundle 'Valloric/YouCompleteMe' "Plugin 'davidhalter/jedi-vim' " for better usage of splits in vim "let g:jedi#use_splits_not_buffers = "left" "let g:jedi#use_tabs_not_buffers = 1 " automatically select the first line in the popup for better flow "let g:jedi#popup_select_first = 0 " terraform plugin Plugin 'hashivim/vim-terraform' let g:terraform_aling=1 let g:terraform_fold_sections=1 let g:terraform_fmt_on_save=1 " python syntax checking Plugin 'vim-syntastic/syntastic' " python PEP8 checking Plugin 'nvie/vim-flake8' Plugin 'tell-k/vim-autopep8' autocmd FileType python noremap r :call Autopep8() " auto pairs of brackets etc. Plugin 'jiangmiao/auto-pairs' " rainbow brackets Plugin 'luochen1990/rainbow' " enable by default au BufEnter * RainbowToggle let g:rainbow_conf = { \ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick'], \ 'ctermfgs': ['lightblue', 'lightyellow', 'lightcyan', 'lightmagenta'], \ 'guis': [''], \ 'cterms': [''], \ 'operators': '_,_', \ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold'], \ 'separately': { \ '*': {}, \ 'markdown': { \ 'parentheses_options': 'containedin=markdownCode contained', \ }, \ 'lisp': { \ 'guifgs': ['royalblue3', 'darkorange3', 'seagreen3', 'firebrick', 'darkorchid3'], \ }, \ 'haskell': { \ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/\v\{\ze[^-]/ end=/}/ fold'], \ }, \ 'vim': { \ 'parentheses_options': 'containedin=vimFuncBody', \ }, \ 'perl': { \ 'syn_name_prefix': 'perlBlockFoldRainbow', \ }, \ 'stylus': { \ 'parentheses': ['start=/{/ end=/}/ fold contains=@colorableGroup'], \ }, \ 'css': 0, \ } \} " better commenting Plugin 'preservim/nerdcommenter' " let the leader key to space Add spaces after comment delimiters by default let g:NERDSpaceDelims = 1 " Use compact syntax for prettified multi-line comments let g:NERDCompactSexyComs = 1 " " Align line-wise comment delimiters flush left instead of following code indentation let g:NERDDefaultAlign = 'left' "" Set a language to use its alternate delimiters by default let g:NERDAltDelims_java = 1 " Add your own custom formats or override the defaults let g:NERDCustomDelimiters = { 'c': { 'left': '/**','right': '*/' } } "" 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" " python color_scheme plugin Plugin 'jnurmine/Zenburn' Plugin 'altercation/vim-colors-solarized' " plugin for easier file browsing Plugin 'scrooloose/nerdtree' Plugin 'jistr/vim-nerdtree-tabs' Plugin 'Xuyuanp/nerdtree-git-plugin' set modifiable let NERDTreeIgnore=['\.pyc$', '\~$'] "ignore files in NERDTree " automatically open nerdtree autocmd StdinReadPre * let s:std_in=1 " open nerdtree in empty vim session autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif " shortcut for opening nerdtree map e :NERDTreeToggle " close vim if only session is nerdtree autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif " let nerdtree show hidden files let NERDTreeShowHidden=1 " better searching in vi Plugin 'ctrlpvim/ctrlp.vim' let g:ctrlp_map = 't' let g:ctrlp_cmd = 'CtrlP' let g:ctrlp_working_path_mode = 'ra' let g:ctrlp_switch_buffer = 'et' " git integration Plugin 'tpope/vim-fugitive' Plugin 'airblade/vim-gitgutter' if has('gui_running') set background=dark colorscheme solarized else colorscheme deus endif " powerline plugin Plugin 'Lokaltog/powerline', {'rtp': 'powerline/bindings/vim/'} " class outline viewer plugin Plugin 'majutsushi/tagbar' nmap c :TagbarToggle " syntax highlighting Plugin 'dense-analysis/ale' let g:ale_linters = { \ 'python': ['flake8', 'pylint'], \ 'ruby': ['standardrb', 'rubocop'], \ 'javascript': ['eslint'], \} let g:ale_fixers = { \ 'python': ['yapf'], \} "nmap r :ALEFix let g:ale_fix_on_save = 1 function! LinterStatus() abort let l:counts = ale#statusline#Count(bufnr('')) let l:all_errors = l:counts.error + l:counts.style_error let l:all_non_errors = l:counts.total - l:all_errors return l:counts.total == 0 ? '✨ all good ✨' : printf( \ '😞 %dW %dE', \ all_non_errors, \ all_errors \) endfunction set statusline= set statusline+=%m set statusline+=\ %f set statusline+=%= set statusline+=\ %{LinterStatus()} " vim-go plugin Plugin 'fatih/vim-go' " buffer explorer plugin Plugin 'jlanzarotta/bufexplorer' " jupyter vim plugin "Plugin 'jupyter-vim/jupyter-vim' " Always use the same virtualenv for vim, regardless of what Python " environment is loaded in the shell from which vim is launched "let g:vim_virtualenv_path = '/home/arch/.vim/jupyter_vim_venv' "if exists('g:vim_virtualenv_path') " pythonx import os; import vim " pythonx activate_this = os.path.join(vim.eval('g:vim_virtualenv_path'), 'bin/activate_this.py') " pythonx with open(activate_this) as f: exec(f.read(), {'__file__': activate_this}) "endif " pretty python code let python_highlight_all = 1 syntax on " All of your Plugins must be added before the following line call vundle#end() " required filetype plugin indent on " required "split navigations nnoremap nnoremap nnoremap nnoremap " Enable folding set foldmethod=indent set foldlevel=99 nnoremap f za " better python identation au BufNewFile,BufRead *.py \ set tabstop=4 | \ set softtabstop=4 | \ set shiftwidth=4 | \ set textwidth=79 | \ set expandtab | \ set autoindent | \ set fileformat=unix au BufNewFile,BufRead *.js, *.html, *.css \ set tabstop=2 | \ set softtabstop= |2 \ set shiftwidth=2 " flag unnecessary whitespace in python files highlight BadWhitespace ctermbg=red guibg=darkred au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ " additional options for youcompleteme let g:ycm_autoclose_preview_window_after_completion=1 map g :YcmCompleter GoToDefinitionElseDeclaration "python with virtualenv support py3 << EOF #import os #import sys #if 'VIRTUAL_ENV' in os.environ: # project_base_dir = os.environ['VIRTUAL_ENV'] # activate_this = os.path.join(project_base_dir, # 'bin/activate_this.py') # execfile(activate_this, dict(__file__=activate_this)) EOF