set nocompatible " Syntax highlighting syntax on " Line numbering set number " Always show the signcolumn set signcolumn=yes " highlight set cursorline " Encoding set encoding=UTF-8 " Auto-indentation set ai set tabstop=4 set shiftwidth=4 set expandtab " Matching paren highlighting set showmatch " Sane colors set background=dark " Show cursor pos set ruler " Make the status line always show up set laststatus=2 set ttimeoutlen=50 " Shut the annoying bell set novisualbell " Set the updatetime set updatetime=500 " Case insensitive when all lowercase set ignorecase set smartcase " Remap arrow keys noremap noremap nnoremap :bprev nnoremap :bnext " write the file when you accidentally opened it without the right (root) privileges cmap w!! w !sudo tee % > /dev/null " Remember mouse cursor position augroup resCur autocmd! autocmd BufReadPost * call setpos(".", getpos("'\"")) augroup END " Plugins let deinpath=$HOME.'/.vim/bundle/repos/github.com/Shougo/dein.vim' let pluginpath=$HOME.'/.vim/bundle' let &rtp.=','.deinpath if dein#load_state(pluginpath) call dein#begin(pluginpath) "call dein#add(deinpath) call dein#add('tpope/vim-sensible') " Colorscheme call dein#add('ajh17/Spacegray.vim.git') " Interface call dein#add('itchyny/lightline.vim') call dein#add('mgee/lightline-bufferline') call dein#add('ryanoasis/vim-devicons') call dein#add('airblade/vim-gitgutter') call dein#add('christoomey/vim-tmux-navigator') call dein#add('scrooloose/nerdtree') call dein#add('Yggdroot/indentLine') " Tools / Commands call dein#add('tpope/vim-surround') call dein#add('jiangmiao/auto-pairs') call dein#add('tpope/vim-endwise') "call dein#add('chrisbra/unicode.vim') call dein#add('ctrlpvim/ctrlp.vim') call dein#add('easymotion/vim-easymotion') call dein#add('tpope/vim-obsession') " Linting / Completion call dein#add('w0rp/ale') call dein#add('maralla/completor.vim') " Language call dein#add('sheerun/vim-polyglot') call dein#end() call dein#save_state() endif filetype plugin indent on syntax enable " Automatically install plugins if dein#check_install() call dein#install() endif " Color scheme colorscheme spacegray " 16 millions colors "set termguicolors " Disable background in terminal hi Normal ctermbg=NONE " Italic comments highlight Comment cterm=italic set t_ZH= set t_ZR= " Completor " TAB to choose completion inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" "inoremap pumvisible() ? "\\" : "\" let g:completor_python_binary = '/usr/bin/python' let g:completor_node_binary = '/usr/bin/node' let g:completor_clang_binary = '/usr/bin/clang' " ALE let g:ale_sign_error = '' let g:ale_sign_warning = '' highlight ALEErrorSign ctermfg=Red highlight ALEWarningSign ctermfg=Blue highlight ALEError ctermfg=Red ctermbg=None cterm=underline highlight ALEWarning ctermfg=Blue ctermbg=None cterm=underline " nerdtree map :NERDTreeToggle " ctrlp let g:ctrlp_map = '' let g:ctrlp_cmd = 'CtrlP' let g:ctrlp_show_hidden = 1 " From lightline help let g:ctrlp_status_func = { \ 'main': 'CtrlPStatusFunc_1', \ 'prog': 'CtrlPStatusFunc_2', \ } function! CtrlPStatusFunc_1(focus, byfname, regex, prev, item, next, marked) return lightline#statusline(0) endfunction function! CtrlPStatusFunc_2(str) return lightline#statusline(0) endfunction " easymotion map (easymotion-prefix) " gitgutter let g:gitgutter_realtime = 1 let g:gitgutter_eager = 0 let g:gitgutter_override_sign_column_highlight = 0 let g:gitgutter_grep = 'rg' let g:gitgutter_sign_added = '+▐' let g:gitgutter_sign_modified = '~▐' let g:gitgutter_sign_removed = '-▐' let g:gitgutter_sign_removed_first_line = '-▐' let g:gitgutter_sign_modified_removed = '~▐' highlight SignColumn ctermbg=None highlight GitGutterAdd ctermfg=green highlight GitGutterChange ctermfg=yellow highlight GitGutterDelete ctermfg=red highlight GitGutterChangeDelete ctermfg=red " indentLine let g:indentLine_faster = 1 let g:indentLine_color_term = 237 let g:indentLine_leadingSpaceEnabled = 1 let g:indentLine_char = '┆' let g:indentLine_leadingSpaceChar = '·' " lightline set noshowmode set showtabline=2 let g:lightline = { \ 'colorscheme': 'wombat', \ 'active': { \ 'left': [ [ 'mode', 'paste' ], \ [ 'readonly', 'filename' ], \ [ 'ctrlpmark' ] ], \ 'right': [ [ 'lineinfo' ], \ [ 'percent' ], \ [ 'linter_errors' ], \ [ 'fileformat', 'fileencoding', 'filetype', 'linter_ok', 'linter_warnings' ] ], \ }, \ 'component_expand': { \ 'linter_warnings': 'LightlineLinterWarnings', \ 'linter_errors': 'LightlineLinterErrors', \ 'linter_ok': 'LightlineLinterOK' \ }, \ 'component_type': { \ 'readonly': 'error', \ 'linter_errors': 'error', \ 'linter_warning': 'warning', \ }, \ 'component_function': { \ 'filename': 'LightlineFilename', \ 'ctrlpmark': 'CtrlPMark', \ }, \ } "lightline-bufferline let g:lightline#bufferline#show_number=2 let g:lightline#bufferline#number_map = { \ 0: '⁰', 1: '¹', 2: '²', 3: '³', 4: '⁴', \ 5: '⁵', 6: '⁶', 7: '⁷', 8: '⁸', 9: '⁹' \ } let g:lightline#bufferline#enable_devicons=1 let g:lightline#bufferline#min_buffer_count=2 let g:lightline.tabline = {'left': [['buffers']], 'right': []} let g:lightline.component_expand = {'buffers': 'lightline#bufferline#buffers'} let g:lightline.component_type = {'buffers': 'tabsel'} function! LightlineFilename() let filename = expand('%:t') !=# '' ? expand('%:t') : '[No Name]' let modified = &modified ? ' +' : '' return filename . modified endfunction function! CtrlPMark() if expand('%:t') =~ 'ControlP' && has_key(g:lightline, 'ctrlp_item') call lightline#link('iR'[g:lightline.ctrlp_regex]) return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item \ , g:lightline.ctrlp_next], 0) else return '' endif endfunction function! LightlineLinterWarnings() 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 ? '' : printf('%d ', all_non_errors) endfunction function! LightlineLinterErrors() 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 ? '' : printf('%d ', all_errors) endfunction function! LightlineLinterOK() 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 ? '0 ' : '' endfunction autocmd User ALELint call s:MaybeUpdateLightline() " Update and show lightline but only if it's visible (e.g., not in Goyo) function! s:MaybeUpdateLightline() if exists('#lightline') call lightline#update() end endfunction