" Disable unused components set nobackup set nocompatible " Setup paths set backupdir=$XDG_CACHE_HOME/vim,/var/tmp,/tmp set directory=$XDG_CACHE_HOME/vim,/var/tmp,/tmp set packpath^=$XDG_CONFIG_HOME/vim set runtimepath^=$XDG_CONFIG_HOME/vim set viminfo+=n$XDG_CACHE_HOME/vim_history "" General filetype plugin on syntax on " Behavior set clipboard=unnamedplus set encoding=utf-8 set fileencoding=utf-8 set hidden set history=1000 set mouse=a set ttimeoutlen=0 set undolevels=1000 set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc,.png,.jpg set wildignore=*.bak,*.swp,*.o,*.info,*.aux,*.log,*.dvi,*.bbl,*.blg,*.brf,*.cb,*.ind,*.idx,*.ilg,*.inx,*.out,*.toc,*.png,*.jpg " Editing set number set ruler set background=dark colorscheme hybrid_reverse set cursorline highlight clear CursorLine highlight CursorLineNr cterm=bold highlight clear SpellBad highlight SpellBad ctermbg=8 ctermfg=15 " Cursor shape let &t_SI = "\[6 q" let &t_SR = "\[4 q" let &t_EI = "\[2 q" " Indentation set autoindent filetype indent on set backspace=indent,eol,start set noexpandtab set shiftround set tabstop=4 set softtabstop=4 set shiftwidth=4 " UI set laststatus=2 set noshowmode set nowrap set title "" Plugin configuration " lightline.vim let g:lightline = {} let g:lightline.colorscheme = 'Tomorrow_Night_Bright' let g:lightline.separator = {'left': "\ue0b0", 'right': "\ue0b2"} let g:lightline.subseparator = {'left': "\ue0b1", 'right': "\ue0b3"} " lightline-bufferline let g:lightline.tabline = {'left': [['buffers']], 'right': [['text']]} let g:lightline.component_expand = {'buffers': 'lightline#bufferline#buffers'} let g:lightline.component_type = {'buffers': 'tabsel'} let g:lightline.component = {'text': 'buffers'} let g:lightline#bufferline#min_buffer_count = 2 " NERD Commenter let g:NERDCommentEmptyLines=1 let g:NERDSpaceDelims=1 let g:NERDTrimTrailingWhitespace=1 " NERD Tree let g:NERDTreeIgnore = ['\.git', '\.bak'] let g:NERDTreeAutoDeleteBuffer=1 let g:NERDTreeDirArrowExpandable = ' ' " let g:NERDTreeDirArrowCollapsible = ' ' let g:NERDTreeMinimalUI=1 let g:NERDTreeShowHidden=1 " vimtex let g:tex_flavor = 'latex' let g:vimtex_view_method = 'zathura' "" Autocommands " Remove trailing whitespace in the following filetypes augroup TrailingWhitespace autocmd! FileType c,cpp,h,ino,java,py,php,sh,tex autocmd BufWritePre %s/\s\+$//e augroup END " Close vim if only window is NERD Tree augroup CloseVimTree autocmd! bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif augroup END augroup PreventBuffer autocmd FileType nerdtree let t:nerdtree_winnr = bufwinnr('%') autocmd BufWinEnter * call PreventBuffersInNERDTree() augroup END "" Functions function! CloseTab() let bufNr = bufnr('%') let nerdTreeStatus = exists('t:NERDTreeBufName') && bufwinnr(t:NERDTreeBufName) != -1 let currentFile = expand('%:t') if nerdTreeStatus execute 'NERDTreeClose' if currentFile !~# 'NERD_tree' execute 'bw 'bufNr execute 'NERDTreeToggle' endif else execute 'bw 'bufNr endif endfunction function! PreventBuffersInNERDTree() if bufname('#') =~ 'NERD_tree' && bufname('%') !~ 'NERD_tree' \ && exists('t:nerdtree_winnr') && bufwinnr('%') == t:nerdtree_winnr \ && &buftype == '' let bufNr = bufnr('%') close execute 'b 'bufNr execute 'NERDTreeToggle' execute "normal! \\" endif endfunction "" Keybindings " Change default behavior nnoremap Y y$ vnoremap p pgvy " Tab/Shift+Tab functionality nnoremap >>_ nnoremap <<_ inoremap vnoremap >gv vnoremap :bprevious nnoremap :bnext nnoremap :call CloseTab() nmap 1 lightline#bufferline#go(1) " Toggle NERD Tree nnoremap :NERDTreeToggle "" Commands :command WQ wq :command Wq wq :command W w :command Q q