vim-settings/vimrc

395 lines
9.2 KiB
VimL
Raw Normal View History

" Install Vundle Packages
filetype off
2012-07-02 17:25:36 +00:00
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
2014-06-17 19:09:01 +00:00
Plugin 'gmarik/vundle'
2012-07-02 17:25:36 +00:00
" Rest of my bundles
" -- File Nav --
2014-06-17 19:09:01 +00:00
Plugin 'scrooloose/nerdtree' " File tree navigation
Plugin 'a.vim' " Switch to alternate file
Plugin 'file-line' " Allow opening to a line from file name using :
Plugin 'tpope/vim-fugitive' " Git integration
" -- Fuzzy Finders --
2014-03-06 17:31:55 +00:00
if ! exists('use_command_t')
let use_command_t = 1
end
2012-07-02 17:25:36 +00:00
" Needs Vim compiled with Ruby
2014-06-17 19:09:01 +00:00
" Quick find files in project
2014-03-06 17:31:55 +00:00
if use_command_t == 1 && has('ruby')
2014-06-17 19:09:01 +00:00
Plugin 'wincent/Command-T'
else
2014-06-17 19:09:01 +00:00
Plugin 'kien/ctrlp.vim'
end
2012-07-02 17:25:36 +00:00
" -- Buffer Nav --
2014-06-17 19:09:01 +00:00
Plugin 'sandeepcr529/Buffet.vim' " Quick buffer switching
2012-07-02 17:25:36 +00:00
" -- Nav in file --
2014-06-17 19:09:01 +00:00
Plugin 'majutsushi/tagbar' " Ctags file parsing
Plugin 'scrooloose/syntastic' " Syntax checking
Plugin 'rking/ag.vim' " Project searching
Plugin 'ViViDboarder/QFixToggle' " Easy Toggle of QuickFix window
"Plugin 'mileszs/ack.vim' " Project Searching
2012-07-02 17:25:36 +00:00
" -- Text Manipulation --
" Easy comments
2014-06-17 19:09:01 +00:00
Plugin 'tomtom/tcomment_vim'
Plugin 'tpope/vim-surround' " Surround for wrapping text
2014-08-08 19:32:23 +00:00
"Plugin 'terryma/vim-multiple-cursors' " Multi cursor
2012-07-02 17:25:36 +00:00
" -- GUI --
2014-06-17 19:09:01 +00:00
Plugin 'gregsexton/MatchTag'
Plugin 'bling/vim-airline' " Custom Status Line
"Powerline Config
2013-10-27 16:25:27 +00:00
"If using a patched font: https://github.com/Lokaltog/vim-powerline/wiki/Patched-fonts
"let g:airline_powerline_fonts = 1
2012-07-02 17:25:36 +00:00
2013-12-05 02:39:19 +00:00
" -- Sytem --
" Allow async make
2014-06-17 19:09:01 +00:00
Plugin 'tpope/vim-dispatch'
2014-08-08 19:32:23 +00:00
Plugin 'Shougo/neocomplcache.vim'
Plugin 'tpope/vim-rsi'
Plugin 'tpope/vim-repeat'
" Needs to be compiled
Plugin 'Shougo/vimproc.vim'
2013-12-05 02:39:19 +00:00
2013-10-27 16:25:27 +00:00
" -- Themes --
2014-06-17 19:09:01 +00:00
Plugin 'vividchalk.vim'
Plugin 'wombat256.vim'
Plugin 'nanotech/jellybeans.vim'
Plugin 'candy.vim'
Plugin 'therubymug/vim-pyte'
Plugin 'eclipse.vim'
Plugin 'summerfruit256.vim'
Plugin 'nuvola.vim'
Plugin 'altercation/vim-colors-solarized'
Plugin 'morhetz/gruvbox'
"Plugin 'BusyBee.vim'
"Plugin 'github.vim'
2013-10-27 16:25:27 +00:00
" -- Filetypes --
2014-06-17 19:09:01 +00:00
Plugin 'ViViDboarder/vim-forcedotcom'
Plugin 'pdurbin/vim-tsv'
Plugin 'pangloss/vim-javascript'
Plugin 'jnwhiteh/vim-golang'
Plugin 'PreserveNoEOL'
Plugin 'ViViDboarder/vim-android'
Plugin 'groovy.vim'
Plugin 'tfnico/vim-gradle'
2014-08-08 19:32:23 +00:00
Plugin 'dart-lang/dart-vim-plugin'
2014-06-17 19:09:01 +00:00
"Plugin 'ViViDboarder/vim-abuse-the-force'
"Plugin 'chrisbra/csv.vim'
" ***************************
" Built in settings
" ***************************
"Allows filetype detection
filetype on
" Set settings values
filetype plugin indent on
" Allow arrow keys
2012-04-24 14:09:19 +00:00
set nocompatible
" Use more convenient leader
let mapleader=","
" Enable mouse input
2012-07-02 17:25:36 +00:00
set mousehide
set mouse=a
" Tab functionality
2012-03-29 03:18:33 +00:00
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
2012-04-24 14:09:19 +00:00
2012-12-10 19:29:24 +00:00
" Display filename at bottom of window
set ls=2
" Set backup dirs
2012-07-02 17:25:36 +00:00
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")
2013-10-27 16:25:27 +00:00
colorscheme wombat256mod
else
colorscheme vividchalk
endif
endif
catch /^Vim\%((\a\+)\)\=:E185/
2013-10-27 16:25:27 +00:00
" Colorschemes not installed yet
" This happens when first installing bundles
colorscheme default
endtry
2013-10-27 16:25:27 +00:00
" Set Airline theme
if g:colors_name == 'github'
let g:airline_theme = 'solarized'
endif
" Set gui fonts
if has("gui_running")
2013-10-27 16:25:27 +00:00
if has("gui_win32")
set guifont=Consolas:h10:b
elseif has("gui_macvim")
try
2013-08-08 03:13:27 +00:00
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
2012-04-24 14:09:19 +00:00
" gotta set these *last*, since `set term` resets everything
set t_ts=k
set t_fs=\
set t_ut=
2013-03-18 02:19:44 +00:00
endif
set title
2013-03-18 02:19:44 +00:00
" ********************************
" SET HOTKEYS
" ********************************
2012-03-29 03:18:33 +00:00
" Remap jk to esc
inoremap jk <esc>
" Bind Make to F5 like other IDEs
nnoremap <F5> :Make!<CR>
" Remap Ctrl+Space for auto Complete
inoremap <C-Space> <C-n>
inoremap <Nul> <C-n>
" Toggle highlighting with \hr (highlight row)
nnoremap <leader>hr :set cursorline!<CR>
" Toggle Line numbers with Ctrl+N double tap
2012-04-24 14:09:19 +00:00
nmap <C-N><C-N> :set invnumber<CR>
nmap <leader>ln :set invnumber<CR>
2012-04-24 14:09:19 +00:00
" Toggle line wrap with Ctrl+L double tap
2012-04-24 14:09:19 +00:00
nmap <C-L><C-L> :set wrap!<CR>
nmap <leader>lw :set wrap!<CR>
2012-03-29 03:18:33 +00:00
" Toggle White Space
nmap <leader>ws :set list!<CR>
" Map Shift+U to redo
2013-10-27 16:25:27 +00:00
nnoremap <S-u> <C-r>
2012-04-24 14:09:19 +00:00
" Stupid shift key fixes
2012-07-02 17:25:36 +00:00
cmap WQ<CR> wq<CR>
cmap Wq<CR> wq<CR>
cmap W<CR> w<CR>
cmap Q<CR> q<CR>
cmap Q!<CR> q!<CR>
2013-10-27 16:25:27 +00:00
" Stupid semicolon files
cnoremap w; w
cnoremap W; w
cnoremap q; q
cnoremap Q; q
2012-04-24 14:09:19 +00:00
" Clearing highlighted search
2012-10-17 20:26:42 +00:00
nmap <silent> <leader>/ :set hlsearch! hlsearch?<CR>
noremap <C-h><C-s> :set hlsearch! hlsearch?<CR>
2013-10-27 16:25:27 +00:00
" Clear search
nmap <silent> <leader>cs :nohlsearch<CR>
" Code fold
2013-12-03 23:06:19 +00:00
nmap <leader>cf va{<ESC>zf%<ESC>:nohlsearch<CR>
2012-04-24 14:09:19 +00:00
" Paste over
vnoremap pp p
vnoremap po "_dP
" ********************************
" PLUGIN SETTINGS
" ********************************
2013-10-27 16:25:27 +00:00
" 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
2013-12-03 23:06:36 +00:00
let g:airline#extensions#tabline#left_sep = ' '
let g:airline#extensions#tabline#left_alt_sep = '|'
2013-10-27 16:25:27 +00:00
" 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 <silent> <F2> :Bufferlist<CR>
nnoremap <leader>bl :Bufferlist<CR>
" NERDTree
nnoremap <silent> <F4> :NERDTreeToggle<CR>
nnoremap <leader>nn :NERDTreeToggle<CR>
nnoremap <leader>nf :NERDTreeFind<CR>
" TComment
nnoremap // :TComment<CR>
vnoremap // :TCommentBlock<CR>
2014-01-22 01:51:04 +00:00
" PreserveNoEOL
let g:PreserveNoEOL = 1
" CTags List
nnoremap <silent> <F8> :TagbarToggle<CR>
" Autofocus tagbar
let g:tagbar_autofocus = 1
2012-07-02 17:25:36 +00:00
" ---------------
" 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.
2014-03-06 17:31:55 +00:00
if use_command_t == 1 && has('ruby')
" Use Command T since we've got Ruby
2012-07-02 17:25:36 +00:00
2014-03-04 18:54:07 +00:00
" Set the default escape keybinding to, you guessed it, escape.
let g:CommandTCancelMap = '<esc>'
" 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
2012-07-02 17:25:36 +00:00
nnoremap <silent><C-t> :CommandT<CR>
2014-01-22 01:51:24 +00:00
nnoremap <silent><C-b> :CommandTBuffer<CR>
" Leader Commands
nnoremap <leader>t :CommandT<CR>
2014-01-22 01:51:24 +00:00
nnoremap <leader>b :CommandTBuffer<CR>
nnoremap <leader>tt :CommandTTag<CR>
2012-07-02 17:25:36 +00:00
else
" Use ctrlp.vim since we don't have Ruby
2012-07-02 17:25:36 +00:00
2014-03-04 18:54:07 +00:00
" Ensure max height isn't too large. (for performance)
let g:ctrlp_max_height = 10
" Conditional Mappings
2012-07-02 17:25:36 +00:00
let g:ctrlp_map = '<C-t>'
" Allow ctrl p to open over the initial nerdtree window
"let g:ctrlp_dont_split = 'NERD_tree_2'
let g:ctrlp_dont_split = 'NERD'
" Leader Commands
nnoremap <leader>b :CtrlPBuffer<CR>
2014-03-04 18:54:07 +00:00
nnoremap <leader>u :CtrlPCurFile<CR>
nnoremap <leader>m :CtrlPMRUFiles<CR>
2012-07-02 17:25:36 +00:00
endif
2013-10-27 16:25:27 +00:00
" fugitive
" Add some shortcuts for git commands
nnoremap <leader>gb :Gblame<CR>
2014-03-04 18:55:00 +00:00
nnoremap <leader>gc :Gcommit<CR>
nnoremap <leader>gd :Gdiff<CR>
nnoremap <leader>gs :Gstatus<CR>
nnoremap <leader>gw :Gwrite<CR>
" Toggle QuickFix window
nnoremap <silent> <F6> :QFix<CR>
2014-01-22 01:51:38 +00:00
nmap <leader>a :Ag<Space>
nmap <leader>i* :Ag<Space>-i<Space>'\b<c-r><c-W>\b'<CR>
2014-01-22 01:51:38 +00:00
nmap <leader>* :Ag<Space>'\b<c-r><c-W>\b'<CR>
" Syntastic settings
let g:syntastic_html_tidy_ignore_errors = [
\ 'proprietary attribute "ng-show"',
\ 'proprietary attribute "ng-controller"',
\ 'proprietary attribute "ng-repeat"',
2013-12-03 23:06:58 +00:00
\ 'proprietary attribute "ng-app"',
\ 'proprietary attribute "ng-click"'
\ ]
2013-12-03 23:06:58 +00:00
2013-12-03 23:05:29 +00:00
" Command to display TODO tags in project
command Todo Ag! TODO