" 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 -- " Quick find files in project Bundle 'kien/ctrlp.vim' " 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' " Needs Vim compiled with Ruby " Quick find files in project Bundle 'wincent/Command-T' " -- Buffer Nav -- " Tree view for managing tabs "Bundle 'kien/tabman.vim' " Quick buffer switching Bundle 'sandeepcr529/Buffet.vim' " Needs Vim compiled with Ruby " Buffer toggler "Bundle 'mutewinter/LustyJuggler' " -- Nav in file -- " Ctags file parsing "Bundle 'taglist.vim' Bundle 'majutsushi/tagbar' " Syntax checking Bundle 'scrooloose/syntastic' " Project Searching Bundle 'mileszs/ack.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 'vividchalk.vim' " Can probably drop this for wombat256 Bundle 'vim-scripts/Wombat' Bundle 'wombat256.vim' Bundle 'gregsexton/MatchTag' " Custom Status Line "Bundle 'Lokaltog/vim-powerline' "Powerline Config "If using a patched font: https://github.com/Lokaltog/vim-powerline/wiki/Patched-fonts "let g:Powerline_symbols = 'fancy' " -- Filetypes -- Bundle 'ViViDboarder/vim-forcedotcom' Bundle 'pdurbin/vim-tsv' " *************************** " 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 " ******************************** " GUI SETTINGS " ***************************** " Set theme based on $VIM_COLOR variable try if !empty($VIM_COLOR) colorscheme $VIM_COLOR else if has("gui_running") colorscheme wombat else colorscheme vividchalk endif endif catch /^Vim\%((\a\+)\)\=:E185/ " Colorschemes not installed yet " This happens when first installing bundles endtry " 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=\ 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! " Clearing highlighted search nmap / :set hlsearch! hlsearch? noremap :set hlsearch! hlsearch? " Clear search nmap cs :nohlsearch " Code fold nmap cf ?{zf%:nohlsearch " Change Working Directory to that of the current file cmap cwd lcd %:p:h cmap cd. lcd %:p:h " ******************************** " PLUGIN SETTINGS " ******************************** " Buffet shortcut nnoremap :Bufferlist nnoremap bl :Bufferlist " NERDTree nnoremap :NERDTreeToggle nnoremap nn :NERDTreeToggle nnoremap nf :NERDTreeFind " NERDComments nnoremap // :TComment vnoremap // :TCommentBlock " 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 " --------------- " Ensure Ctrl-P isn't bound by default let g:ctrlp_map = '' " Ensure max height isn't too large. (for performance) let g:ctrlp_max_height = 10 let g:CommandTMaxHeight = 10 " Set the default escape keybinding to, you guessed it, escape. let g:CommandTCancelMap = '' " 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 has('ruby') " Use Command T since we've got Ruby " Mappings nnoremap :CommandT " Leader Commands nnoremap t :CommandT nnoremap b :CommanTBuffer nnoremap tt :CommandTTag else " Use ctrlp.vim since we don't have Ruby " Conditional Mappings let g:ctrlp_map = '' " Leader Commands nnoremap b :CtrlPBuffer endif " Also map leader commands nnoremap u :CtrlPCurFile nnoremap m :CtrlPMRUFiles " fugitive " Add some shortcuts for git commands nnoremap gs :Gstatus nnoremap gc :Gcommit nnoremap gb :Gblame " Toggle QuickFix window nnoremap :QFix nmap a :Ack nmap * :Ack