" Base Plugins - shared by vim & nvim " add seamless movement between vim and tmux, switch windows with C-hjkl Plug 'christoomey/vim-tmux-navigator' " automatically save the current buffer when navigating away from vim let g:tmux_navigator_save_on_switch = 1 " automatically switch between relative and absolute numbers as buffers move " into / out of focus (requires number & relativenumber to be set) Plug 'jeffkreeftmeijer/vim-numbertoggle' " sneak around your files using Plug 'justinmk/vim-sneak' " repeatedly pressing fFtTsS will advance the search instead of starting a new " one. To start a new one, press any other key, then fFtTsS let g:sneak#s_next = 1 " use ignorecase/smartcase, depending on vim setting let g:sneak#use_ic_scs = 1 " highlight all occurences of the current word under the cursor (after 250ms " delay) Plug 'RRethy/vim-illuminate' " editing Workflow Plug 'tpope/vim-commentary' " easily toggle comments for lines, paragraphs etc with gc Plug 'tpope/vim-surround' " lets you change surrounding things with cs (or ds to del, ys to add) Plug 'tommcdo/vim-exchange' " adds exchange operator with cx. common use: cxiw . on 2 words to switch Plug 'jiangmiao/auto-pairs' " Auto close brackets and '' " " Ecosystem " " Plug 'tpope/vim-fugitive' - Will have to take a closer look some other time Plug 'scrooloose/nerdtree', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] } " show a directory listing within vim Plug 'Xuyuanp/nerdtree-git-plugin', { 'on': ['NERDTreeToggle', 'NERDTreeFind'] } " show git status in nerdtree for files and dirs " highlight the line the cursor is on let NERDTreeHighlightCursorline = 1 " remove Press ? for help let NERDTreeMinimalUI=1 " loads nerdtree plugin when starting vim with a directory " this is necessary when we lazyload nerdtree with vimplug above " since it would only get loaded with nttoggle otherwise, and run netrw augroup nerd_loader autocmd! autocmd VimEnter * silent! autocmd! FileExplorer autocmd BufEnter,BufNew * \ if isdirectory(expand('')) \| call plug#load('nerdtree') \| execute 'autocmd! nerd_loader' \| endif augroup END " Fuzzy matching Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --bin' } Plug 'junegunn/fzf.vim' " set some fzf defaults " windows drops down from above, 40% of the screen let g:fzf_layout = { 'up': '~40%' } " any Fzf command is prefixed with Fzf " this groups them nicely together, and avoids confusion when suddenly :Buffer " or :Files would appear as a command otherwise let g:fzf_command_prefix = 'Fzf' " let the colors come from our colorscheme let g:fzf_colors = \ { 'fg': ['fg', 'Normal'], \ 'bg': ['bg', 'Normal'], \ 'hl': ['fg', 'Comment'], \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], \ 'hl+': ['fg', 'Statement'], \ 'info': ['fg', 'PreProc'], \ 'border': ['fg', 'Ignore'], \ 'prompt': ['fg', 'Conditional'], \ 'pointer': ['fg', 'Exception'], \ 'marker': ['fg', 'Keyword'], \ 'spinner': ['fg', 'Label'], \ 'header': ['fg', 'Comment'] } " add some additional actions TODO perhaps unify with NerdTree mappings let g:fzf_action = { \ 'ctrl-t': 'tab split', \ 'ctrl-x': 'split', \ 'ctrl-v': 'vsplit' }