" Use pathogen to manage our runtime files autocmd! call pathogen#infect('bundles/{}') filetype plugin indent on syntax on " Basic vim setup set nocompatible set tabstop=4 set shiftwidth=4 set expandtab set smarttab set autoindent set smartindent set backspace=indent,eol,start set nowrap set wrapscan set incsearch " incremental search (search as you type) set number " line numbering set ruler " setup and show ruler set textwidth=78 set colorcolumn=80 set formatoptions=qrn1 set cursorline " highlight cursorline set showmode " show mode in status bar set showcmd set showmatch set cmdheight=2 set ignorecase smartcase set showtabline=2 set numberwidth=5 set winwidth=79 set switchbuf=useopen " Show . char for trailing whitespace " set list " set listchars=trail:. " set color scheme set t_Co=256 "colorscheme wombat256mod set background=dark let g:solarized_termcolors=256 colorscheme solarized " set yanks to go to the clipboard if $TMUX == '' set clipboard+=unnamed endif " remap the leader to something more friendly let mapleader = "," " time to wait after ESC or leader immediate mode command set timeout timeoutlen=1000 ttimeoutlen=150 " reload and edit vimrc nnoremap sv :source $MYVIMRC nnoremap ev :vsplit $MYVIMRC " edit bundle config nnoremap eb :vsplit $HOME/.vim/update_bundles " save buffer as root nnoremap sr :w !sudo tee % > /dev/null " setup easy current buffer path expansion -- stolen from practical vim cnoremap %% getcmdtype() == ':' ? expand('%:h') . '/' : '%%' " enable syntax autocompletion set omnifunc=syntaxcomplete#Complete set completeopt=menu,preview """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " CUSTOM AUTOCMDS """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" augroup vimrcEx " Clear all autocmds in the group autocmd! autocmd FileType text setlocal textwidth=78 " Jump to last cursor position unless it's invalid or in an event handler autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif " make twig files use jinja syntax rules autocmd BufRead,BufNewFile *.twig set filetype=htmljinja " for autoindent with two spaces, always expand tabs autocmd FileType ruby,haml,sh,zsh,bash,eruby,yaml,html,nasm,javascript,sass,cucumber set ai sw=2 sts=2 et autocmd FileType python set sw=4 sts=4 et autocmd Filetype make setlocal noexpandtab autocmd BufRead,BufNewFile *.sass set filetype=sass autocmd BufRead,BufNewFile *.s set filetype=nasm autocmd BufRead,BufNewFile *.asm set filetype=nasm autocmd BufRead *.mkd set ai formatoptions=tcroqn2 comments=n:> autocmd BufRead *.markdown set ai formatoptions=tcroqn2 comments=n:> " Leave the return key alone when in command line windows, since it's used " to run commands there. autocmd! CmdwinEnter * :unmap autocmd! CmdwinLeave * :call MapCR() " for PHP autocmd FileType php set omnifunc=phpcomplete#CompletePHP let php_sql_query=1 let php_htmlInStrings=1 " for Ruby autocmd FileType ruby,eruby set omnifunc=rubycomplete#Complete autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1 autocmd FileType ruby,eruby let g:rubycomplete_rails = 1 autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1 " format and indent xml using xmllint autocmd FileType xml setlocal equalprg=xmllint\ --format\ --recover\ -\ 2>/dev/null augroup END """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " MULTIPURPOSE TAB KEY " Indent if we're at the beginning of a line. Else, do completion. """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! InsertTabWrapper() let col = col('.') - 1 if !col || getline('.')[col - 1] !~ '\k' return "\" else return "\" endif endfunction inoremap =InsertTabWrapper() inoremap """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " RENAME CURRENT FILE """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! RenameFile() let old_name = expand('%') let new_name = input('New file name: ', expand('%'), 'file') if new_name != '' && new_name != old_name exec ':saveas ' . new_name exec ':silent !rm ' . old_name redraw! endif endfunction map n :call RenameFile() " Insert/delete line numbers nnoremap ln :% s/^/\=line('.'). '. ' / nnoremap dln :% s/^[0-9]*. // " Line numbering toggle map gn :set invnu " Nerd tree setup nmap :NERDTreeToggle " Set up nice buffer switching set hidden " maybe I want to switch buffers without saving nnoremap " Setup wildmenu set wildchar= wildmenu wildmode=full set wildcharm= set wildignore+=*/.git/*,*/.hg/*,*/.svn/*,*cache* " Use ctrl-motion to switch between windows nnoremap h nnoremap j nnoremap k nnoremap l " Open up a new vertically split window nnoremap nv :botright vnew " CTags setup nnoremap :TlistToggle set tags=tags;$HOME " this will look in the current directory for 'tags', and work up until $HOME let Tlist_php_settings = 'php;c:class;f:function;d:constant' let Tlist_File_Fold_Auto_Close = 1 let Tlist_WinWidth = 40 let Tlist_Close_on_Select = 1 let Tlist_Exit_OnlyWindow = 1 " CtrlP setup if executable('ag') " Use Ag over Grep let grepprg="ag\ --nogroup\ --nocolor" " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore let g:ctrlp_user_command = 'ag %s -i --nocolor --nogroup --hidden \ --ignore .git \ --ignore .svn \ --ignore .hg \ --ignore .DS_Store \ --ignore "**/*.pyc" \ -g ""' endif let g:ctrlp_working_path_mode = 'ra' let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$' " Air Powerline setup set laststatus=2 let g:airline_powerline_fonts = 1 let g:airline_theme = 'solarized' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#fnamemod = ':t' " gui options :set guioptions-=m "remove menu bar :set guioptions-=T "remove toolbar :set guioptions-=r "remove right-hand scroll bar :set guifont=mononoki\ Nerd\ Font\ Mono:h15 " sql pretty vnoremap rp :s/\\\|\\\|\\\|\\\|\\\|\\\|\\\|\/\r\U&/ge silent! py3 pass