" Install Vundle Packages filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' " Rest of my bundles " -- File Nav -- " File tree navigation Bundle 'scrooloose/nerdtree' " Switch to alternate file Bundle 'a.vim' " Allow opening to a line from file name using : Bundle 'file-line' " Git integration Bundle 'tpope/vim-fugitive' if ! exists('use_command_t') let use_command_t = 1 end " Needs Vim compiled with Ruby if use_command_t == 1 && has('ruby') " Quick find files in project Bundle 'wincent/Command-T' else " Quick find files in project Bundle 'kien/ctrlp.vim' end " -- Buffer Nav -- " Quick buffer switching Bundle 'sandeepcr529/Buffet.vim' " -- Nav in file -- " Ctags file parsing Bundle 'majutsushi/tagbar' " Syntax checking Bundle 'scrooloose/syntastic' " Project Searching "Bundle 'mileszs/ack.vim' Bundle 'rking/ag.vim' " Easy Toggle of QuickFix window Bundle 'ViViDboarder/QFixToggle' " -- Text Manipulation -- " Easy comments Bundle 'tomtom/tcomment_vim' " Surround for wrapping text Bundle 'tpope/vim-surround' " Multi cursor Bundle 'terryma/vim-multiple-cursors' " -- GUI -- Bundle 'gregsexton/MatchTag' " Custom Status Line Bundle 'bling/vim-airline' "Powerline Config "If using a patched font: https://github.com/Lokaltog/vim-powerline/wiki/Patched-fonts "let g:airline_powerline_fonts = 1 " -- Sytem -- " Allow async make Bundle 'tpope/vim-dispatch' " -- Themes -- Bundle 'vividchalk.vim' Bundle 'wombat256.vim' "Bundle 'BusyBee.vim' Bundle 'nanotech/jellybeans.vim' "Bundle 'github.vim' Bundle 'candy.vim' Bundle 'therubymug/vim-pyte' Bundle 'eclipse.vim' Bundle 'summerfruit256.vim' Bundle 'nuvola.vim' Bundle 'altercation/vim-colors-solarized' Bundle 'morhetz/gruvbox' " -- Filetypes -- Bundle 'ViViDboarder/vim-forcedotcom' Bundle 'ViViDboarder/vim-abuse-the-force' Bundle 'pdurbin/vim-tsv' "Bundle 'chrisbra/csv.vim' Bundle 'pangloss/vim-javascript' Bundle 'PreserveNoEOL' " *************************** " Built in settings " *************************** "Allows filetype detection filetype on " Set settings values filetype plugin indent on " Allow arrow keys set nocompatible " Use more convenient leader let mapleader="," " Enable mouse input set mousehide set mouse=a " Tab functionality set expandtab set tabstop=4 set shiftwidth=4 set softtabstop=4 set autoindent " Ensure backspace actually works set backspace=2 " " allow for cursor beyond last character set virtualedit=onemore " lines to scroll when cursor leaves screen set scrolljump=5 " minimum lines to keep above and below cursor set scrolloff=3 " Display filename at bottom of window set ls=2 " Set backup dirs set backup set backupdir=~/.vim/backup set directory=~/.vim/tmp "enable line numbers set nu " Highlights the line the cursor is on set cursorline :hi CursorLine cterm=NONE ctermbg=darkred guibg=darkred guifg=white " Syntax Hightlighting syntax on " Enable search highlighting set hls " Change Working Directory to that of the current file cmap cwd lcd %:p:h cmap cd. lcd %:p:h " ******************************** " GUI SETTINGS " ***************************** " Set theme based on $VIM_COLOR variable try if !empty($VIM_COLOR) colorscheme $VIM_COLOR else if has("gui_running") colorscheme wombat256mod else colorscheme vividchalk endif endif catch /^Vim\%((\a\+)\)\=:E185/ " Colorschemes not installed yet " This happens when first installing bundles colorscheme default endtry " Set Airline theme if g:colors_name == 'github' let g:airline_theme = 'solarized' endif " Set gui fonts if has("gui_running") if has("gui_win32") set guifont=Consolas:h10:b elseif has("gui_macvim") try set guifont=DejaVu\ Sans\ Mono\ for\ Powerline:h11 catch " Failed to set font endtry endif endif " Set xterm title, and inform vim of screen/tmux's syntax for doing the same set titlestring=vim\ %{expand(\"%t\")} if &term =~ "^screen" " pretend this is xterm. it probably is anyway, but if term is left as " `screen`, vim doesn't understand ctrl-arrow. if &term == "screen-256color" set term=xterm-256color else set term=xterm endif " gotta set these *last*, since `set term` resets everything set t_ts=k set t_fs=\ set t_ut= endif set title " ******************************** " SET HOTKEYS " ******************************** " Remap jk to esc inoremap jk " Bind Make to F5 like other IDEs nnoremap :Make " Remap Ctrl+Space for auto Complete inoremap inoremap " Toggle highlighting with \hr (highlight row) nnoremap hr :set cursorline! " Toggle Line numbers with Ctrl+N double tap nmap :set invnumber nmap ln :set invnumber " Toggle line wrap with Ctrl+L double tap nmap :set wrap! nmap lw :set wrap! " Toggle White Space nmap ws :set list! " Map Shift+U to redo nnoremap " Stupid shift key fixes cmap WQ wq cmap Wq wq cmap W w cmap Q q cmap Q! q! " Stupid semicolon files cnoremap w; w cnoremap W; w cnoremap q; q cnoremap Q; q " Clearing highlighted search nmap / :set hlsearch! hlsearch? noremap :set hlsearch! hlsearch? " Clear search nmap cs :nohlsearch " Code fold nmap cf va{zf%:nohlsearch " Paste over vnoremap pp p vnoremap po "_dP " ******************************** " PLUGIN SETTINGS " ******************************** " Airline config " Use short-form mode text let g:airline_mode_map = { \ '__' : '-', \ 'n' : 'N', \ 'i' : 'I', \ 'R' : 'R', \ 'c' : 'C', \ 'v' : 'V', \ 'V' : 'V', \ '' : 'V', \ 's' : 'S', \ 'S' : 'S', \ '' : 'S', \ } let g:airline#extensions#whitespace#trailing_format = 'tw[%s]' let g:airline#extensions#whitespace#mixed_indent_format = 'i[%s]' 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#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' " AbuseTheForce " Set foreground if using tmux, otherwise background if exists("$TMUX") || ( has("gui_running") && has("gui_macvim") ) let g:abusetheforce_dispatch_background = 0 else let g:abusetheforce_dispatch_background = 1 end " Buffet shortcut nnoremap :Bufferlist nnoremap bl :Bufferlist " NERDTree nnoremap :NERDTreeToggle nnoremap nn :NERDTreeToggle nnoremap nf :NERDTreeFind " NERDComments nnoremap // :TComment vnoremap // :TCommentBlock " PreserveNoEOL let g:PreserveNoEOL = 1 " CTags List nnoremap :TagbarToggle " Autofocus tagbar let g:tagbar_autofocus = 1 " --------------- " Command T and ctrlp.vim " Snagged from mutewinter @ https://github.com/mutewinter/dot_vim " --------------- " Dynamically use Command T or ctrlp.vim based on availability of Ruby. " We do this because Command T is much faster than ctrlp.vim. if use_command_t == 1 && has('ruby') " Use Command T since we've got Ruby " Set the default escape keybinding to, you guessed it, escape. let g:CommandTCancelMap = '' " Ensure Ctrl-P isn't bound by default let g:ctrlp_map = '' " Ensure max height isn't too large. (for performance) let g:CommandTMaxHeight = 10 " Mappings nnoremap :CommandT nnoremap :CommandTBuffer " Leader Commands nnoremap t :CommandT nnoremap b :CommandTBuffer nnoremap tt :CommandTTag else " Use ctrlp.vim since we don't have Ruby " Ensure max height isn't too large. (for performance) let g:ctrlp_max_height = 10 " Conditional Mappings let g:ctrlp_map = '' " Leader Commands nnoremap b :CtrlPBuffer nnoremap u :CtrlPCurFile nnoremap m :CtrlPMRUFiles endif " fugitive " Add some shortcuts for git commands nnoremap gb :Gblame nnoremap gc :Gcommit nnoremap gd :Gdiff nnoremap gs :Gstatus nnoremap gw :Gwrite " Toggle QuickFix window nnoremap :QFix nmap a :Ag nmap i* :Ag-i'\b\b' nmap * :Ag'\b\b' " Syntastic settings let g:syntastic_html_tidy_ignore_errors = [ \ 'proprietary attribute "ng-show"', \ 'proprietary attribute "ng-controller"', \ 'proprietary attribute "ng-repeat"', \ 'proprietary attribute "ng-app"', \ 'proprietary attribute "ng-click"' \ ] " Command to display TODO tags in project command Todo Ag! TODO