Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
executable file 327 lines (246 sloc) 7.85 KB
silent! call pathogen#runtime_append_all_bundles()
" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible
"Don't warn before switching away from an unsaved buffer
set hidden
" 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
" 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
" 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
autocmd BufNewFile,BufRead *.xml source ~/.vim/ftplugin/xml.vim
augroup END
au BufNewFile,BufRead *.handlebars set filetype=html
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
set statusline=[%n]\ %<%.99f\ %h%w%m%r%y\ %{fugitive#statusline()}%{exists('*CapsLockStatusline')?CapsLockStatusline():''}%=%-16(\ %l,%c-%v\ %)%P
set statusline+=%{rvm#statusline()}
" \ is the leader character
"let mapleader = "\\"
let mapleader = ","
" Edit the README_FOR_APP (makes :R commands work)
map <Leader>R :e doc/README_FOR_APP<CR>
" Leader shortcuts for Rails commands
map <Leader>m :Rmodel
map <Leader>c :Rcontroller
map <Leader>v :Rview
map <Leader>u :Runittest
map <Leader>f :Rfunctionaltest
map <Leader>tm :RTmodel
map <Leader>tc :RTcontroller
map <Leader>tv :RTview
map <Leader>tu :RTunittest
map <Leader>tf :RTfunctionaltest
map <Leader>sm :RSmodel
map <Leader>sc :RScontroller
map <Leader>sv :RSview
map <Leader>su :RSunittest
map <Leader>sf :RSfunctionaltest
" Hide search highlighting
map <Leader>h :set invhls <CR>
" Opens an edit command with the path of the currently edited file filled in
" Normal mode: <Leader>e
map <Leader>e :e <C-R>=expand("%:p:h") . "/" <CR>
map <Leader>es :sp <C-R>=expand("%:p:h") . "/" <CR>
map <Leader>ev :vsp <C-R>=expand("%:p:h") . "/" <CR>
map <Leader>et :tabe <C-R>=expand("%:p:h") . "/" <CR>
" Inserts the path of the currently edited file into a command
" Command mode: Ctrl+P
cmap <C-P> <C-R>=expand("%:p:h") . "/" <CR>
" Maps autocomplete to tab
" imap <Tab> <C-N>
function! Tab_Or_Complete()
if col('.')>1 && strpart( getline('.'), col('.')-2, 3 ) =~ '^\w'
return "\<C-N>"
else
return "\<Tab>"
endif
endfunction
inoremap <Tab> <C-R>=Tab_Or_Complete()<CR>
" Duplicate a selection
" Visual mode: D
vmap D y'>p
" For Haml
au! BufRead,BufNewFile *.haml setfiletype haml
" No Help, please
nmap <F1> <Esc>
" Press ^F from insert mode to insert the current file name
imap <C-F> <C-R>=expand("%")<CR>
" Press Shift+P while in visual mode to replace the selection without
" overwriting the default register
vmap P p :call setreg('"', getreg('0')) <CR>
" Display extra whitespace
set list listchars=tab:»·,trail:·
" Edit routes
command! Rroutes :e config/routes.rb
command! RTroutes :tabe config/routes.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
endif
" Color scheme
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 = "<S-Tab>"
" (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'"
colorscheme vividchalk
"colorscheme molokai
"let g:molokai_original = 1
"colorscheme mustang
"colorscheme clouds_midnight
" bind \d to toggle file browser
" requires NERDTree
nmap <D-d> :NERDTreeToggle<CR>
" bind command-/ to toggle comment
" requires NERD Commenter to be installed
nmap <D-/> ,c<space>
vmap <D-/> ,c<space>
imap <D-/> <C-O>,c<space>
let g:fuzzy_matching_limit=70
let g:fuzzy_ignore = "*.log"
let g:fuzzy_celing=20000
" binds \ t to textmate-style fuzzy finder
map <leader>ff :FuzzyFinderTextMate<CR>
map <leader>fb :FuzzyFinderBuffer<CR>
map <D-1> :tabn 1<CR>
map <D-2> :tabn 2<CR>
map <D-3> :tabn 3<CR>
map <D-4> :tabn 4<CR>
map <D-5> :tabn 5<CR>
map <D-6> :tabn 6<CR>
map <D-7> :tabn 7<CR>
map <D-8> :tabn 8<CR>
map <D-9> :tabn 9<CR>
nmap <D-]> >>
vmap <D-]> >>
imap <D-]> <C-O>>>
nmap <D-[> <<
vmap <D-[> <<
imap <D-[> <C-O><<
imap <C-l> <Space>=><Space>
nmap <leader>v :vsplit<CR> <C-w><C-w>
nmap <leader>s :split<CR> <C-w><C-w>
nmap <leader>w <C-w><C-w>_
inoremap <D-CR> <C-O>o
" \F to startup an ack search
map <leader>F :Ack<space>
function! RunSpec(args)
if exists("b:rails_root") && filereadable(b:rails_root . "/script/spec")
let spec = b:rails_root . "/script/spec"
else
let spec = "bundle exec rspec"
end
let cmd = ":! " . spec . " % -cfn " . a:args
execute cmd
endfunction
map !s :call RunSpec("-l " . <C-r>=line('.')<CR>)
map !S :call RunSpec("")
map <Leader>r <Plug>MakeGreen
if has("gui_running")
set fuoptions=maxvert,maxhorz
" au GUIEnter * set fullscreen
endif
autocmd BufNewFile,BufRead *_spec.rb compiler rspec
au BufRead,BufNewFile {Vagrantfile,Gemfile,Rakefile} set ft=ruby
map <buffer> <silent> <Leader>td <Plug>ToggleDone
map <buffer> <silent> <Leader>tc <Plug>ShowContext
map <buffer> <silent> <Leader>ta <Plug>ShowAll
map <buffer> <silent> <Leader>tp <Plug>FoldAllProjects
if has("autocmd")
autocmd bufwritepost .vimrc source $MYVIMRC
endif
function! HandleURI()
let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;:]*')
if s:uri != ""
let s:uri = escape (s:uri, "#?&;|%")
exec "!open \"" . s:uri . "\""
else
echo "No URI found in line."
endif
endfunction
map <Leader>w :call HandleURI()<CR>
compiler rubyunit
nnoremap <Leader>fd :cf /tmp/autotest.txt<cr> :compiler rubyunit<cr>
let g:LustyExplorerSuppressRubyWarning = 1
let g:LustyJugglerSuppressRubyWarning = 1
function! RestartRailsApp()
exec "!touch tmp/restart.txt"
endfunction
map <Leader>rr :call RestartRailsApp()<CR>
" http://stevelosh.com/blog/2010/09/coming-home-to-vim/#making-vim-more-useful
nnoremap j gj
nnoremap k gk
inoremap <F1> <ESC>
nnoremap <F1> <ESC>
vnoremap <F1> <ESC>
nnoremap ; :
nnoremap <leader><Space> :%s/\s\+$//<cr>:let @/=''<CR>
nnoremap <leader>v V`]
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l