" based on http://github.com/jferris/config_files/blob/master/vimrc " Use Vim settings, rather then Vi settings (much better!). " This must be first, because it changes other options as a side effect. set nocompatible " allow backspacing over everything in insert mode set backspace=indent,eol,start set nobackup set nowritebackup set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time set showcmd " display incomplete commands set incsearch " do incremental searching " Don't use Ex mode, use Q for formatting map Q gq " This is an alternative that also works in block mode, but the deleted " text is lost and it only works for putting the current register. "vnoremap p "_dp " Switch syntax highlighting on, when the terminal has colors " Also switch on highlighting the last used search pattern. if (&t_Co > 2 || has("gui_running")) && !exists("syntax_on") syntax on set hlsearch endif " Switch wrap off for everything set nowrap " Only do this part when compiled with support for autocommands. if has("autocmd") " Enable file type detection. " Use the default filetype settings, so that mail gets 'tw' set to 72, " 'cindent' is on in C files, etc. " Also load indent files, to automatically do language-dependent indenting. filetype plugin indent on " Set File type to 'text' for files ending in .txt autocmd BufNewFile,BufRead *.txt setfiletype text " Enable soft-wrapping for text files autocmd FileType text,markdown,html,xhtml,eruby setlocal wrap linebreak nolist " Put these in an autocmd group, so that we can delete them easily. augroup vimrcEx au! " For all text files set 'textwidth' to 78 characters. " autocmd FileType text setlocal textwidth=78 " When editing a file, always jump to the last known cursor position. " Don't do it when the position is invalid or when inside an event handler " (happens when dropping a file on gvim). autocmd BufReadPost * \ if line("'\"") > 0 && line("'\"") <= line("$") | \ exe "normal g`\"" | \ endif " Automatically load .vimrc source when saved autocmd BufWritePost .vimrc source $MYVIMRC augroup END else set autoindent " always set autoindenting on endif " has("autocmd") " if has("folding") " set foldenable " set foldmethod=syntax " set foldlevel=1 " set foldnestmax=2 " set foldtext=strpart(getline(v:foldstart),0,50).'\ ...\ '.substitute(getline(v:foldend),'^[\ #]*','','g').'\ ' " endif " Softtabs, 2 spaces set tabstop=2 set shiftwidth=2 set expandtab " Always display the status line set laststatus=2 " \ is the leader character let mapleader = "," " Edit the README_FOR_APP (makes :R commands work) map R :e doc/README_FOR_APP " Leader shortcuts for Rails commands map m :Rmodel map c :Rcontroller map v :Rview map u :Runittest map f :Rfunctionaltest map tm :RTmodel map tc :RTcontroller map tv :RTview map tu :RTunittest map tf :RTfunctionaltest map sm :RSmodel map sc :RScontroller map sv :RSview map su :RSunittest map sf :RSfunctionaltest " Hide search highlighting map h :set invhls " Opens an edit command with the path of the currently edited file filled in " Normal mode: e map e :e =expand("%:p:h") . "/" " Opens a tab edit command with the path of the currently edited file filled in " Normal mode: t map te :tabe =expand("%:p:h") . "/" " Inserts the path of the currently edited file into a command " Command mode: Ctrl+P cmap =expand("%:p:h") . "/" " Duplicate a selection " Visual mode: D vmap D y'>p " Press Shift+P while in visual mode to replace the selection without " overwriting the default register vmap P p :call setreg('"', getreg('0')) " For Haml au! BufRead,BufNewFile *.haml setfiletype haml " No Help, please nmap " Press ^F from insert mode to insert the current file name imap =expand("%") " Maps autocomplete to tab imap imap => " Display extra whitespace " set list listchars=tab:Èá,trail:á " Edit routes command! Rroutes :e config/routes.rb command! Rschema :e db/schema.rb " Local config if filereadable(".vimrc.local") source .vimrc.local endif " Use Ack instead of Grep when available if executable("ack") set grepprg=ack\ -H\ --nogroup\ --nocolor\ --ignore-dir=tmp\ --ignore-dir=coverage endif " Color scheme " colorscheme vividchalk " highlight NonText guibg=#060606 " highlight Folded guibg=#0A0A0A guifg=#9090D0 " Numbers set number set numberwidth=5 " Snippets are activated by Shift+Tab let g:snippetsEmu_key = "" " Tab completion options " (only complete to the longest unambiguous match, and show a menu) set completeopt=longest,menu set wildmode=list:longest,list:full set complete=.,t " case only matters with mixed case expressions set ignorecase set smartcase " Tags let g:Tlist_Ctags_Cmd="ctags --exclude='*.js'" set tags=./tags; let g:fuf_splitPathMatching=1 " Open URL command -bar -nargs=1 OpenURL :!open function! OpenURL() let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;:]*') echo s:uri if s:uri != "" exec "!open \"" . s:uri . "\"" else echo "No URI found in line." endif endfunction map w :call OpenURL()