" change runtime path set runtimepath=~/.config/vim/runtime/ execute pathogen#infect() execute pathogen#helptags() "we don't want vi compatibility AKA Make Vim more useful set nocompatible "color schemes "colorscheme desert "colorscheme jellybeans "colorscheme molokai "colorscheme wombat256mod "colorscheme hickop colorscheme torte "colorscheme deus "colorscheme moria "colorscheme pablo "colorscheme slate "colorscheme evening "colorscheme darkblue "colorscheme base16-flat "colorscheme inkpot "colorscheme liquidcarbon "colorscheme sonofobsidian "colorscheme vividchalk "colorscheme evening "colorscheme morning "colorscheme elflord "colorscheme koehler "colorscheme delek "colorscheme ron "colorscheme shine "colorscheme peachpuff "colorscheme peaksea "colorscheme murphy "colorscheme zellner "colorscheme sunburst "colorscheme pinksea "colorscheme CandyPaper set omnifunc=syntaxcomplete#Complete set completeopt-=preview set wildignore=*.png,*.jpg,node_modules,*.min.js,*.txt,*.bak,*.exe,vendor.js set autochdir set tags=./.git/tags,tags;$HOME set noswapfile set backupcopy=yes set autoread set selection=exclusive set ttimeoutlen=50 " Use the OS clipboard by default (on versions compiled with `+clipboard`) set clipboard=unnamedplus " Enhance command-line completion set wildmenu " Allow cursor keys in insert mode set esckeys " Allow backspace in insert mode set backspace=indent,eol,start " Optimize for fast terminal connections set ttyfast " Add the g flag to search/replace by default set gdefault " Use UTF-8 without BOM set encoding=utf-8 "nobomb set binary " Don't add empty newlines at the end of files set noeol set history=500 " Number of things to remember in history. set t_Co=256 " Centralize backups, swapfiles and undo history if exists("&backupdir") set backupdir=~/tools/vim/backups endif if exists("&directory") set directory=~/tools/vim/swaps endif if exists("&undodir") set undodir=~/tools/vim/undo endif " Respect modeline in files set modeline set modelines=4 " Enable per-directory .vimrc files and disable unsafe commands in them set exrc set secure " Enable line numbers set number " Enable syntax highlighting syntax on " Highlight current line set cursorline " Make tabs as wide as four spaces set tabstop=4 set expandtab set shiftwidth=4 " Show “invisible” characters set lcs=tab:▸\ ,trail:·,eol:¬,nbsp:_ set list " Highlight searches set hlsearch " Ignore case of searches set ignorecase " Highlight dynamically as pattern is typed set incsearch " Always show status line set laststatus=2 " Enable mouse in all modes set mouse=a " Disable error bells set noerrorbells " Dont reset cursor to start of line when moving around. set nostartofline " Show the cursor position set ruler " Dont show the intro message when starting Vim set shortmess=atI " Show the current mode set showmode " Show the filename in the window titlebar set title " Show the (partial) command as its being typed set showcmd " Start scrolling x lines before the horizontal window border set scrolloff=4 autocmd FileType javascript setlocal ts=4 sts=4 sw=4 expandtab autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab autocmd Filetype go setlocal ts=4 sw=4 sts=4 noexpandtab " Change mapleader let mapleader = "," map :HardTimeToggle map :noh "replace with regular newlines noremap c :%s/ //g "list buffers map w :buffers " open erros map e :lw 5 " mini buffer explorer toggle map b :MBEToggle " easymotion mappings " n character search map / (easymotion-tn) " 2 character search map s (easymotion-s2) " nerdtree mapppings nmap n :NERDTreeToggle %:p:h nmap m :NERDTreeClose:NERDTreeFind " strips whitespace noremap ss :call StripWhitespace() " Strip trailing whitespace (,ss) function! StripWhitespace() let save_cursor = getpos(".") let old_query = getreg('/') :%s/\s\+$//e call setpos('.', save_cursor) call setreg('/', old_query) endfunction " pane resizing noremap :resize -3 noremap :resize +3 noremap :vertical resize +3 noremap :vertical resize -3 "pane movements noremap h noremap j noremap k noremap l map x :%s/\s\+$//:noh "reload vim config noremap rr :so ~/.vimrc "open vimrc in a new tab map v :tabedit ~/.vimrc map " Save a file as root (,W) noremap W :w !sudo tee % > /dev/null " generate tags nnoremap c :! ctags -R -f ./.git/tags . " enable neocomplete let g:neocomplete#enable_at_startup = 0 " Use smartcase let g:neocomplete#enable_smart_case = 0 " indent guides let g:indent_guides_enable_on_vim_startup = 1 let g:indent_guides_guide_size = 1 let g:indent_guides_start_level = 2 " tern let g:tern_show_argument_hits='on_hold' let g:tern_map_keys=1 let g:tern_map_prefix = '' " vim-go let g:go_highlight_functions = 1 let g:go_highlight_methods = 1 let g:go_highlight_structs = 1 let g:go_highlight_operators = 1 let g:go_highlight_build_constraints = 1 let g:go_highlight_extra_types = 1 let g:go_fmt_command = "goreturns" " -b -w -p" let g:syntastic_go_checkers = ['go', 'errcheck', 'gofmt', 'golint', 'govet'] "let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['go'] } " Automatic commands if has("autocmd") " Use relative line numbers if exists("&relativenumber") set relativenumber au BufReadPost * set relativenumber endif " rename symbol au FileType go nmap r (go-rename) " show type info au FileType go nmap ki (go-info) " go def au FileType go nmap di (go-def-split) au FileType go nmap ds (go-def-vertical) au FileType go nmap dt (go-def-tab) " go docs au FileType go nmap gd (go-doc) au FileType go nmap gi (go-doc-vertical) au FileType go nmap gb (go-doc-browser) endif " ctrl p let g:ctrlp_map = '' "nnoremap :CtrlPTag let g:ctrlp_cmd = 'CtrlPLastMode' let g:ctrlp_extensions = ['line'] let g:ctrlp_show_hidden = 1 "'c' - the directory of the current file. "'a' - the directory of the current file, unless it is a subdirectory of the cwd "'r' - the nearest ancestor of the current file that contains one of these directories or files: .git .hg .svn .bzr _darcs "'w' - modifier to "r": start search from the cwd instead of the current file's directory "0 or '' (empty string) - disable this feature. let g:ctrlp_working_path_mode = 'ra' let g:ctrlp_by_filename = 0 let g:ctrlp_max_files = 5000 let g:ctrlp_custom_ignore = { \ 'dir': '\v[\/]\.(git|hg|svn)$', \ 'file': '\v\.(exe|so|dll)$', \ } let g:go_disable_autoinstall = 0 "airline config let g:airline#extensions#tabline#enabled = 1 " the separator used on the left side > "let g:airline_left_sep='>' " the separator used on the right side > "let g:airline_right_sep='<' " enable modified detection > let g:airline_detect_modified=1 " enable paste detection > let g:airline_detect_paste=1 " enable iminsert detection > let g:airline_detect_iminsert=1 " determine whether inactive windows should have the left section collapsed to only the filename of that buffer. let g:airline_inactive_collapse=1 " enable/disable csv integration for displaying the current column. let g:airline#extensions#csv#enabled = 1 " customize the whitespace symbol. > let g:airline#extensions#whitespace#symbol = '.' " themes are automatically selected based on the matching colorscheme. this can be overridden by defining a value. "let g:airline_theme= " if you want to patch the airline theme before it gets applied, you can supply the name of a function where you can modify the palette. let g:airline_theme_patch_func = 'AirlineThemePatch' function! AirlineThemePatch(palette) if g:airline_theme == 'badwolf' for colors in values(a:palette.inactive) let colors[3] = 245 endfor endif endfunction " enable/disable automatic population of the `g:airline_symbols` dictionary with powerline symbols. let g:airline_powerline_fonts=1 " define the set of text to display for each mode. let g:airline_mode_map = { \ '__' : '-', \ 'n' : 'N', \ 'i' : 'I', \ 'R' : 'R', \ 'c' : 'C', \ 'v' : 'V', \ 'V' : 'V', \ '' : 'V', \ 's' : 'S', \ 'S' : 'S', \ '' : 'S', \ } " defines whether the preview window should be excluded from have its window statusline modified (may help with plugins which use the preview window heavily) > let g:airline_exclude_preview = 0 " change the text for when no branch is detected > let g:airline#extensions#branch#empty_message = 'No Branch' " truncate long branch names to a fixed length > let g:airline#extensions#branch#displayed_head_limit = 15 " enable/disable fugitive/lawrencium integration > let g:airline#extensions#branch#enabled = 1 " syntastic settings let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 2 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 1 let g:syntastic_loc_list_height = 1 let g:syntastic_enable_balloons = 1 let g:syntastic_javascript_checkers = ['standard'] " YCM let g:ycm_key_list_select_completion = ['', ''] " Enable file type detection filetype plugin indent on augroup myvimrc au! au BufWritePost .vimrc so $MYVIMRC augroup END " Automatic commands if has("autocmd") " Treat .json files as .js autocmd BufNewFile,BufRead *.json setfiletype json syntax=javascript " Treat .md files as Markdown autocmd BufNewFile,BufRead *.md setlocal filetype=markdown autocmd BufRead,BufNewFile *.html setfiletype html syntax=htmldjango autocmd BufRead,BufNewFile *.template setfiletype html template syntax=htmldjango autocmd BufRead,BufNewFile *.go setfiletype golang syntax=go autocmd BufRead,BufNewFile *.php setfiletype php syntax=go autocmd BufRead,BufNewFile Dockerfile* setfiletype Dockerfile syntax=go " Spell check and line wrap just for git commit messages autocmd Filetype gitcommit setlocal spell textwidth=72 endif au GUIEnter * set vb t_vb= if has('gui_running') set go =mt set guifont=Literation\ Mono\ for\ Powerline:h12,Literation_Mono_for_Powerline:h12,Inconsolata\ for\ Powerline:h10,Ubuntu\ Mono:h26,Consolas:h12,Courier:h12 endif