""" vim config """ Author: Chun Li """ PLUGINS call plug#begin('~/.local/share/nvim/plugged') if filereadable(expand("~/.vimrc.bundles")) source ~/.vimrc.bundles endif call plug#end() " Plugin settings let g:ctrlp_match_window = 'order:ttb,max:20' let g:NERDSpaceDelims=1 let g:gitgutter_enabled = 0 " Use The Silver Searcher https://github.com/ggreer/the_silver_searcher if executable('ag') " Use Ag over Grep set grepprg=ag\ --nogroup\ --nocolor " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' endif """ SET CONFIGS " enable syntax highlighting syntax enable filetype plugin indent on colorscheme monokai set autoindent set autoread " reload files when changed on disk, i.e. via `git checkout` set backspace=2 " Fix broken backspace in some setups set backupcopy=yes " see :help crontab set cc=100 " color column set clipboard=unnamed " yank and paste with the system clipboard set directory-=. " don't store swapfiles in the current directory set encoding=utf-8 set expandtab " expand tabs to spaces set hlsearch " set highlight search set ignorecase " case-insensitive search set incsearch " search as you type set laststatus=2 " always show statusline set list " show trailing whitespace set listchars=tab:▸\ ,trail:▫ set mouse=a " Enable basic mouse behavior such as resizing buffers. set nocompatible " don't bother with vi compatibility set number " show line numbers set ruler " show where you are set scrolloff=3 " show context above/below cursorline set shiftwidth=4 " normal mode indentation commands use 4 spaces set showcmd set smartcase " case-sensitive search if any caps set softtabstop=4 " insert mode tab and backspace use 4 spaces set tabstop=4 " actual tabs occupy 4 characters set wildignore=log/**,node_modules/**,target/**,tmp/**,*.rbc set wildmenu " show a navigable menu for tab completion set wildmode=longest,list,full """ MAPPINGS " keyboard shortcuts let mapleader = ',' " buffer navigation noremap h noremap j noremap k noremap l " plugins nnoremap a :Ag nnoremap b :CtrlPBuffer nnoremap d :NERDTreeToggle nnoremap f :NERDTreeFind nnoremap t :CtrlP nnoremap T :CtrlPClearCache:CtrlP nnoremap ] :TagbarToggle nnoremap g :GitGutterToggle nnoremap G :Gblame noremap :set list! noremap V :source ~/.vimrc:filetype detect:exe ":echo 'vimrc reloaded'" " tab creation :map :tabe :imap :tabe :vmap :tabe " tabbing :nmap >> :nmap << :vmap > :vmap < " in case you forgot to sudo cnoremap w!! %!sudo tee > /dev/null % """ FILETYPES " fdoc is yaml autocmd BufRead,BufNewFile *.fdoc set filetype=yaml " md is markdown autocmd BufRead,BufNewFile *.md set filetype=markdown autocmd BufRead,BufNewFile *.md set spell """ FIXES " automatically rebalance windows on vim resize autocmd VimResized * :wincmd = if exists('$TMUX') && !has('nvim') " Support resizing in tmux set ttymouse=xterm2 endif " Fix Cursor in TMUX if exists('$TMUX') let &t_SI = "\Ptmux;\\]50;CursorShape=1\x7\\\" let &t_EI = "\Ptmux;\\]50;CursorShape=0\x7\\\" else let &t_SI = "\]50;CursorShape=1\x7" let &t_EI = "\]50;CursorShape=0\x7" endif " Don't copy the contents of an overwritten selection. vnoremap p "_dP