" vim settings " Pathogen " loads all plugins places in the ~/.vim/bundle directory runtime bundle/vim-pathogen/autoload/pathogen.vim call pathogen#infect() """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => General """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" "set winwidth=120 set nocompatible " not compatible with vi set autoread " detect when a file is changed " make backspace behave in a sane manner set backspace=indent,eol,start " set a map leader for more key combos let mapleader = "," let g:mapleader = "," " change history to 1000 set history=10000 " Tab control set smarttab set expandtab set shiftwidth=4 set tabstop=4 set softtabstop=4 "set notimeout "set ttimeout "set ttimeoutlen=10 " faster redrawing set ttyfast " allow matching of if/end, etc. with % runtime macros/matchit.vim " highlight conflicts match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' " Enable file type detection and do language dependent indenting filetype plugin indent on " file type specific settings if has("autocmd") autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab autocmd FileType make setlocal ts=8 sts=8 sw=8 noexpandtab autocmd FileType ruby setlocal ts=2 sts=2 sw=2 expandtab autocmd FileType html setlocal ts=4 sts=4 sw=4 expandtab autocmd FileType jade setlocal ts=2 sts=2 sw=2 noexpandtab "autocmd WinEnter * setlocal cursorline "autocmd WinLeave * setlocal nocursorline " automatically resize panes on resize autocmd VimResized * exe "normal! \=" "autocmd BufWritePost .vimrc source $MYVIMRC " save all files on focus lost, ignoring warnings about untitled buffers autocmd FocusLost * silent! wa autocmd BufNewFile,BufRead *.json set filetype=javascript autocmd BufNewFile,BufRead *.ejs set filetype=html endif " code folding settings set foldmethod=syntax " fold based on indent set foldnestmax=10 " deepest fold is 10 levels set nofoldenable " don't fold by default set foldlevel=1 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => User Interface """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" set so=7 " set 7 lines to the cursors - when moving vertical set wildmenu " enhanced command line completion set hidden " current buffer can be put into background set showcmd " show incomplete commands set noshowmode " don't show which mode disabled for PowerLine set wildmode=list:longest " complete files like a shell set scrolloff=3 " lines of text around cursor set shell=/bin/zsh set ruler " show postiion in file set cmdheight=1 " command bar height set title " set terminal title " Searching set ignorecase " case insensitive searching set smartcase " case-sensitive if expresson contains a capital letter set hlsearch set incsearch " set incremental search, like modern browsers set nolazyredraw " don't redraw while executing macros set magic " Set magic on, for regex set showmatch " show matching braces set mat=2 " how many tenths of a second to blink " switch to line when editing and block when not let cursor_to_bar = "\]50;CursorShape=1\x7" let cursor_to_block = "\]50;CursorShape=0\x7" let &t_SI = cursor_to_bar let &t_EI = cursor_to_block " error bells set noerrorbells set visualbell set t_vb= set tm=500 " switch syntax highlighting on syntax on set background=dark "colorscheme jellybeans "colorscheme xorium "colorscheme molokai "colorscheme ir_black "colorscheme mango "colorscheme mustang "colorscheme vividchalk "colorscheme desert "colorscheme solarized colorscheme smyck " set number " show line numbers set relativenumber " show relative line numbers set wrap " turn on line wrapping "set nowrap "turn off line wrapping set wrapmargin=8 " wrap lines when coming within n characters from side set linebreak " set soft wrapping set showbreak=… " show ellipsis at breaking set autoindent " automatically set indent of new line set encoding=utf8 set t_Co=256 " Explicitly tell vim that the terminal supports 256 colors" try lang en_US catch endtry " set ffs=unix,mac,dos "default file types """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Files, backups, and undo """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" "set nobackup "set nowritebackup "set noswapfile set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => StatusLine """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" set laststatus=2 " show the satus line all the time "set statusline=\ %{HasPaste()}%F%m%r%h\ %w\ %{fugitive#statusline()}\ Dir:%r%{CurDir()}%h\ \ \ Line:%l/%L\ Column:%c " set statusline=[%n]\ %<%.99f\ %h%w%m%r%y\ %{fugitive#statusline()}%=%-16(\ %l:%L,\ %c-%v\ %)%P function! CurDir() let curdir = getcwd() return curdir endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Mappings """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " General mappings/shortcuts for functionality " Additional, plugin-specific mappings are located under " the plugins section " nnoremap K :q " remove extra whitespace nmap :%s/\s\+$ nmap , :w " set paste toggle set pastetoggle= " edit ~/.vimrc map e :e! ~/.vimrc " clear highlighted search noremap :set hlsearch! hlsearch? " toggle invisible characters set invlist set listchars=tab:▸\ ,eol:¬,trail:⋅,extends:❯,precedes:❮ set showbreak=↪ nmap l :set list! " Textmate style indentation vmap [ ] >gv nmap [ << nmap ] >> " easier begin/end nav map "noremap HH ^ "noremap LL $ " buffer shortcuts nmap n :bn " go to next buffer nmap p :bp " go to prev buffer nmap q :bd " close the current buffer " switch between current and last buffer nmap . " disable arrow keys (forced learning) "noremap "" "noremap! "noremap "" "noremap! "noremap "" "noremap! "noremap "" "noremap! " Window movement shortcuts " move to the window in the direction shown, or create a new window function! WinMove(key) let t:curwin = winnr() exec "wincmd ".a:key if (t:curwin == winnr()) if (match(a:key,'[jk]')) wincmd v else wincmd s endif exec "wincmd ".a:key endif endfunction map :call WinMove('h') map :call WinMove('j') map :call WinMove('k') map :call WinMove('l') map wc :wincmd q " window movement shortcuts "map h " go to window left "map j " go to window down "map k " go to window up "map l " go to window right " equalize windows map = = " Edit Shortcuts " these automatically populate the current filepath cnoremap %% =expand('%:h').'/' map ew :e %% map es :sp %% map ev :vsp %% map et :tabe %% " Moving shortcuts " Instead of pressing g$, press command " vmap gj " vmap gk " vmap g$ " vmap g^ " vmap g^ " nmap gj " nmap gk " nmap g$ " nmap g^ " nmap g^ " toggle cursor line nnoremap i :set cursorline! " scroll the viewport faster nnoremap 3 nnoremap 3 " moving up and down work as you would expect nnoremap j gj nnoremap k gk " toggle paste map v :set paste! function! ToggleNuMode() if (&rnu == 1) set nu else set rnu endif endfunction nnoremap / :call ToggleNuMode() """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Plugins """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Powerline settings " must have modified font installed to enable fancy " let g:Powerline_symbols = 'fancy' let g:Powerline_stl_path_style = 'filename' " Toggle NERDTree nmap k :NERDTreeToggle " expand to the path of the file in the current buffer nmap y :NERDTreeFind " map fuzzyfinder (CtrlP) plugin nmap t :CtrlP nmap r :CtrlPBuffer " CtrlP ignore patterns let g:ctrlp_custom_ignore = '\.git$|\.hg$|\.svn$' """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Local vimrc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " load a custom, per machine vimrc if available if filereadable(glob("~/.vimrc.local")) source ~/.vimrc.local endif """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " => Local, Per Project vimrc """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" if filereadable(".vimrc.project") source ./.vimrc.local endif