if empty(glob('~/.vim/autoload/plug.vim')) silent !curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim autocmd VimEnter * PlugInstall | source $MYVIMRC endif call plug#begin() " Plug packages without settings {{{1 Plug 'tpope/vim-surround' Plug 'tpope/vim-commentary' " Improved Incremental Search Plug 'haya14busa/incsearch.vim' map / (incsearch-forward) map ? (incsearch-backward) map g/ (incsearch-stay) let g:incsearch#auto_nohlsearch = 1 " Turn off search highlighting after moving map n (incsearch-nohl-n) map N (incsearch-nohl-N) map * (incsearch-nohl-*) " Syntax Checking {{{1 Plug 'vim-syntastic/syntastic' let g:syntastic_check_on_wq = 0 " netrw let g:netrw_liststyle = 3 let g:netrw_banner = 1 " Ctrl-p {{{1 Plug 'kien/ctrlp.vim' let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' set wildignore+=*/tmp/*,*.so,*.swp,*.zip let g:ctrlp_user_command = { 'types': { 1: ['.git', 'cd %s && git ls-files . -co --exclude-standard'], }, 'fallback': 'find %s -type f' } " JSON Support {{{1 Plug 'elzr/vim-json' let g:vim_json_syntax_conceal = 0 " Tmux Integration {{{1 Plug 'christoomey/vim-tmux-navigator' nnoremap :TmuxNavigateLeft nnoremap :TmuxNavigateDown nnoremap :TmuxNavigateUp nnoremap :TmuxNavigateRight " Color Scheme {{{1 Plug 'altercation/vim-colors-solarized' let g:solarized_termcolors=256 let g:solarized_termtrans=1 let g:solarized_contrast="normal" let g:solarized_visibility="normal" set background=light colorscheme solarized highlight ColorColumn ctermbg=0 guibg=#eee8d5 " DelimitMate {{{1 Plug 'Raimondi/delimitMate' let delimitMate_expand_cr = 1 " Airline {{{1 Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' let g:airline_theme='solarized' let g:airline_powerline_fonts = 1 let g:airline#extensions#tabline#enabled = 1 " Tab bar at top if !exists('g:airline_symbols') let g:airline_symbols = {} endif let g:airline_symbols.space = "\ua0" if has('statusline') set laststatus=2 set statusline=%<%f\ " Filename set statusline+=%w%h%m%r " Options set statusline+=\ [%{&ff}/%Y] " Filetype set statusline+=\ [%{getcwd()}] " Current dir set statusline+=%=%-14.(%l,%c%V%)\ %p%% " Right aligned file nav info endif " Golang Support {{{1 Plug 'fatih/vim-go' au FileType go nmap gi (go-info) au FileType go nmap gl (go-metalinter) let g:go_highlight_types = 1 let g:go_highlight_build_constraints = 1 let g:go_auto_type_info = 0 let g:go_fmt_command = "goimports" let g:go_metalinter_autosave = 1 let g:go_metalinter_autosave_enabled = ['vet', 'golint', 'errcheck', 'varcheck'] let g:go_metalinter_enabled = ['vet', 'golint', 'errcheck', 'varcheck', 'ineffassign', 'megacheck', 'interfacer', 'maligned'] let g:go_metalinter_deadline = '20s' call plug#end() filetype plugin indent on " Appearance {{{1 set cursorline " Highlight the current line set showmatch " Show matching brackets/parenthesis set hlsearch " Highlight search terms syntax on " Turn on syntax highlighting set spell " Turn on spellchecking set number " Turn on line numbers set mouse= " Disable mouse support let g:CSApprox_hook_post = ['hi clear SignColumn'] highlight clear CursorLineNr " Remove highlight color from current line number highlight clear SignColumn " SignColumn should match background highlight clear LineNr " Current line number row will have same background color in relative mode set textwidth=80 au FileType json setlocal textwidth=150 set colorcolumn=+1 set list " Highlight white-space characters set listchars=tab:›\ ,trail:•,extends:#,nbsp:. " but only the ones we don't want " Splits {{{1 map j_ map k_ map h_ map l_ " Whitespace {{{1 set tabstop=4 set softtabstop=4 set expandtab set shiftwidth=4 set autoindent " Indent on paste set smartindent " Indent intelligently set nojoinspaces " Collapse spaces after sentences " Search {{{1 set ignorecase set smartcase set incsearch nnoremap :nohlsearch " c-l redraws the screen and clears matches " Metadata {{{1 set backup set backupdir=$HOME/.vim/backups set directory=$HOME/.vim/swaps set undodir=$HOME/.vim/undo if has('persistent_undo') set undofile " So is persistent undo ... set undolevels=1000 " Maximum number of changes that can be undone set undoreload=10000 " Maximum number lines to save for undo on a buffer reload endif " Git {{{1 au FileType gitcommit set tw=72 " Override the line length for git commits " Always start the cursor at the top left corner in a commit message au FileType gitcommit au! BufEnter COMMIT_EDITMSG call setpos('.', [0, 1, 1, 0]) " Other Settings {{{1 set history=1000 " Greatly increase the size of the history (from 20) set iskeyword-=. " '.' is an end of word designator set iskeyword-=# " '#' is an end of word designator set iskeyword-=- " '-' is an end of word designator nnoremap & :&& " & repeats the previous substitution, however by default xnoremap & :&& " loses the flags, this fixes that. let g:clang_user_options='|| exit 0' set wildmenu " Show a menu rather than auto-completing " autocompletion :inoremap /[)}"'\]>]:nohla " Enable omni completion. autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS autocmd FileType python setlocal omnifunc=pythoncomplete#Complete autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags