set nocompatible " Options {{{ set autoindent set autoread let &background = $BACKGROUND ==# 'light' ? 'light' : 'dark' set backspace=indent,eol,start set nobackup set clipboard=unnamed set colorcolumn=80 set cursorline set diffopt=filler,vertical set encoding=utf8 set expandtab set fileformats=unix,mac,dos set foldenable set foldlevelstart=100 set foldmethod=syntax set foldnestmax=10 let &formatlistpat='^\s*\(\d\+[\]:.)}\t ]\|[-*]\|\[[ x]\]\|([ x])\)\s*' set formatoptions-=t set formatoptions+=jn set hidden set history=1000 set hlsearch set incsearch set nojoinspaces set laststatus=2 set lazyredraw set list if has('multi_byte') && &encoding ==# 'utf-8' let &listchars = 'tab:▷ ,extends:»,precedes:«,trail:·' let &showbreak = ' ⤷ ' else let &listchars = 'tab:>~,extends:>,precedes:<,trail:-' let &showbreak = '-> ' endif set modelines=0 set number set scrolloff=5 set shiftwidth=4 set shortmess+=I set showmatch set noshowmode set sidescrolloff=5 set nrformats-=octal set smartindent set smarttab set splitbelow set splitright set noswapfile set tabstop=4 set textwidth=79 set timeoutlen=1000 set ttimeoutlen=100 set ttyfast " +--Disable hlsearch while loading viminfo " | +--Remember marks for last 500 files " | | +--Remember up to 10000 lines in each register " | | | +--Remember up to 1MB in each register " | | | | +--Remember last 1000 search patterns " | | | | | +---Remember last 1000 commands " | | | | | | " v v v v v v set viminfo=h,'500,<10000,s1000,/1000,:1000 set viminfofile=~/.vim/viminfo set virtualedit=block set wildignore=*.o,*.obj,*.pyc,*.exe,*.so,*.dll set wildmenu set wrap set writebackup " }}} " Plugins {{{ call plug#begin('~/.vim/bundle') Plug 'altercation/vim-colors-solarized' Plug 'bronson/vim-trailing-whitespace' Plug 'elzr/vim-json' Plug 'godlygeek/tabular' | Plug 'plasticboy/vim-markdown' Plug 'junegunn/rainbow_parentheses.vim' Plug 'kien/ctrlp.vim' Plug 'scrooloose/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'tpope/vim-commentary' Plug 'tpope/vim-fugitive' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'vim-scripts/srec.vim' Plug 'keith/swift.vim' Plug 'chr4/nginx.vim' call plug#end() let g:ctrlp_match_window = 'bottom,order:ttb' let g:ctrlp_switch_buffer = 0 " open files in new buffer let g:ctrlp_working_path_mode = 0 " use the current working directory let g:rainbow#pairs = [['(',')'], ['[',']'], ['{','}']] " line : col (% of total) let g:airline_section_z = airline#section#create(['%4l:%3v (%p%% of %L)']) if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_left_sep = ' ' let g:airline_left_alt_sep = '' let g:airline_right_sep = ' ' let g:airline_right_alt_sep = '' let g:airline_symbols.crypt = '🔒' let g:airline_symbols.branch = '⎇' let g:airline_symbols.paste = 'Ⓟ' let g:airline_symbols.spell = '✔' let g:airline_symbols.readonly = ' ⃠' let g:airline_symbols.notexists = '∄' let g:airline_symbols.whitespace = '✗' highlight link srecStart Comment highlight link srecType Comment highlight link srecLength WarningMsg highlight link srec16BitAddress Constant highlight link srec24BitAddress Constant highlight link srec32BitAddress Constant highlight link srecChecksum Type colorscheme solarized filetype plugin indent on syntax enable " }}} " Functions {{{ " Cycle through relativenumber + number, number (only), and no numbering. function! VimrcCycleNumbers() abort if exists('+relativenumber') execute { \ '00': 'set relativenumber | set number', \ '01': 'set norelativenumber | set number', \ '10': 'set norelativenumber | set nonumber', \ '11': 'set norelativenumber | set number' }[&number . &relativenumber] else set number! " No relative numbering, just toggle numbers on and off. endif endfunction " }}}" " Mappings {{{ let mapleader = "\" let maplocalleader = "," " better navigation for wrapped lines noremap j gj noremap k gk " quickly exit insert mode inoremap jk " retain selection when indenting/unindenting in visual mode vnoremap > >gv vnoremap < <gv " better searching (case insensitive & expand on previous) nnoremap // /\c nnoremap /// // " window resizing similar to the way I have tmux set up nnoremap 5+ nnoremap 5- nnoremap 5< nnoremap 5> " easier tab navigation nnoremap :tabprevious nnoremap :tabnext nnoremap :tabfirst nnoremap :tablast " quickly change background nnoremap bg \ :let &background = &background ==# 'light' ? 'dark' : 'light' " turn off search highlight nnoremap h :nohlsearch " toggle NERDTree nnoremap n :NERDTreeToggle " toggle rainbow parens nnoremap r :RainbowParentheses!! " fix whitespace nnoremap w :FixWhitespace " cycle through line numbering modes nnoremap r :call VimrcCycleNumbers() " }}}" augroup vimrc " {{{ autocmd! autocmd BufNewFile,BufRead bash_profile,bashrc set filetype=sh autocmd BufNewFile,BufRead gitconfig set filetype=gitconfig autocmd BufNewFile,BufRead rcrc set filetype=sh autocmd BufNewFile,BufRead *.sx,*.s19 set filetype=srec autocmd FileType vim setlocal foldmethod=marker autocmd FileType python setlocal foldmethod=indent foldignore= autocmd FileType markdown,text,gitcommit setlocal formatoptions+=t spell autocmd FileType gitcommit setlocal textwidth=72 augroup END " }}} if filereadable(expand("~/.vimrc.local")) | source ~/.vimrc.local | endif