Bunch of changes inspired by r00k
This commit is contained in:
331
vimrc
Normal file
331
vimrc
Normal file
@@ -0,0 +1,331 @@
|
||||
let mapleader=","
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" PLUGINS
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
call pathogen#infect()
|
||||
call pathogen#helptags()
|
||||
|
||||
" ctrlp.vim Config
|
||||
set runtimepath^=~/.vim/bundle/ctrlp.vim
|
||||
let g:ctrlp_map = '<leader>ff'
|
||||
let g:ctrlp_cmd = 'CtrlP'
|
||||
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
|
||||
map <leader>fr :call ShowRoutes()<cr>
|
||||
map <leader>fv :CtrlP app/views<cr>
|
||||
map <leader>fc :CtrlP app/controllers<cr>
|
||||
map <leader>fm :CtrlP app/models<cr>
|
||||
map <leader>fh :CtrlP app/helpers<cr>
|
||||
map <leader>fl :CtrlP lib<cr>
|
||||
map <leader>fp :CtrlP vendor/plugins<cr>
|
||||
map <leader>fs :CtrlP spec<cr>
|
||||
map <leader>ft :CtrlP test<cr>
|
||||
|
||||
" # gist-vim
|
||||
let g:gist_detect_filetype = 1
|
||||
let g:gist_open_browser_after_post = 1
|
||||
let g:gist_show_privates = 1
|
||||
let g:gist_post_private = 1
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" BASIC EDITING CONFIGURATION
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
set nocompatible
|
||||
" allow unsaved background buffers and remember marks/undo for them
|
||||
set hidden
|
||||
set history=10000
|
||||
set expandtab
|
||||
set tabstop=2
|
||||
set shiftwidth=2
|
||||
set softtabstop=2
|
||||
set autoindent
|
||||
set laststatus=2
|
||||
set showmatch
|
||||
set incsearch
|
||||
set dictionary+=/usr/share/dict/words
|
||||
set number
|
||||
set hlsearch
|
||||
" make searches case-sensitive only if they contain upper-case characters
|
||||
set ignorecase smartcase
|
||||
" highlight current line
|
||||
set cmdheight=2
|
||||
set switchbuf=useopen
|
||||
set numberwidth=5
|
||||
set showtabline=2
|
||||
set winwidth=79
|
||||
set shell=bash
|
||||
" Prevent Vim from clobbering the scrollback buffer. See
|
||||
" http://www.shallowsky.com/linux/noaltscreen.html
|
||||
set t_ti= t_te=
|
||||
" keep more context when scrolling off the end of a buffer
|
||||
set scrolloff=3
|
||||
" Store temporary files in a central spot
|
||||
set backup
|
||||
set backupdir=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
|
||||
set directory=~/.vim-tmp,~/.tmp,~/tmp,/var/tmp,/tmp
|
||||
" allow backspacing over everything in insert mode
|
||||
set backspace=indent,eol,start
|
||||
" display incomplete commands
|
||||
set showcmd
|
||||
" Enable highlighting for syntax
|
||||
syntax on
|
||||
" 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
|
||||
" use emacs-style tab completion when selecting files, etc
|
||||
set wildmode=longest,list
|
||||
colorscheme Monokai
|
||||
set wildignore+=*/tmp/*,*/log/*,*.so,*.swp,*.zip,*/rdoc/*
|
||||
set colorcolumn=90
|
||||
" Show trailing whitespace
|
||||
set list listchars=tab:»·,trail:·
|
||||
" Adding this since the esc remap on the 'i' key had a long delay when pressed
|
||||
set timeoutlen=300 ttimeoutlen=0
|
||||
|
||||
" Fix vim's background colour erase - http://snk.tuxfamily.org/log/vim-256color-bce.html
|
||||
if &term =~ '256color'
|
||||
" Disable Background Color Erase (BCE) so that color schemes
|
||||
" work properly when Vim is used inside tmux and GNU screen.
|
||||
" See also http://snk.tuxfamily.org/log/vim-256color-bce.html
|
||||
set t_ut=
|
||||
endif
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" 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("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
|
||||
|
||||
autocmd FileType ruby,haml,eruby,yaml,html,javascript,sass,cucumber set ai sw=2 sts=2 et
|
||||
autocmd FileType python set sw=2 sts=2 et
|
||||
|
||||
" Indent p tags
|
||||
autocmd FileType html,eruby if g:html_indent_tags !~ '\\|p\>' | let g:html_indent_tags .= '\|p\|li\|dt\|dd' | endif
|
||||
augroup END
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" STATUS LINE
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
:set statusline=%<%f\ (%{&ft})\ %-4(%m%)%=%-19(%3l,%02c%03V%)
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" MISC KEY MAPS
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" insert an end tag with <c-e>
|
||||
imap <c-e> end
|
||||
|
||||
" insert a hash rocket with <c-l>
|
||||
imap <c-l> <space>=><space>
|
||||
|
||||
" Mapping ESC in insert mode and command mode to double i
|
||||
imap ii <C-[>
|
||||
cmap ii <C-[>
|
||||
|
||||
" suspend process
|
||||
nmap <leader>z <c-z>
|
||||
|
||||
" Quickly edit/reload the vimrc file
|
||||
nmap <silent> <leader>ev :e $MYVIMRC<cr>
|
||||
nmap <silent> <leader>rv :so $MYVIMRC<cr>
|
||||
|
||||
" remap saving and quiting :P
|
||||
nmap <leader>w :w<cr>
|
||||
nmap <leader>q :q<cr>
|
||||
nmap <leader>Q :q!<cr>
|
||||
nmap <leader>x :x<cr>
|
||||
:ca WQ wq
|
||||
:ca Wq wq
|
||||
:ca W w
|
||||
:ca Q q
|
||||
|
||||
" Map ctrl-movement keys to window switching
|
||||
map <c-k> <c-w><Up>
|
||||
map <c-j> <c-w><Down>
|
||||
map <c-l> <c-w><Right>
|
||||
map <c-h> <c-w><Left>
|
||||
|
||||
" Window splitting - couldn't figure out how to remap <c-w>v & <c-w>n to <c-m>
|
||||
" & <c-n>
|
||||
map <leader>m :vsplit<cr>
|
||||
map <leader>mm :split<cr>
|
||||
|
||||
map <leader>gg :topleft 100 :split Gemfile<cr>
|
||||
|
||||
" Clear the search buffer (highlighting) when hitting return
|
||||
function! MapCR()
|
||||
nnoremap <cr> :nohlsearch<cr>
|
||||
endfunction
|
||||
call MapCR()
|
||||
nnoremap <leader><leader> <c-^>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" ABBREVIATIONS
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
:ab teh the
|
||||
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" MULTIPURPOSE TAB KEY
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
function! InsertTabWrapper()
|
||||
let col = col('.') - 1
|
||||
if !col || getline('.')[col - 1] !~ '\k'
|
||||
return "\<tab>"
|
||||
else
|
||||
return "\<c-p>"
|
||||
endif
|
||||
endfunction
|
||||
inoremap <tab> <c-r>=InsertTabWrapper()<cr>
|
||||
inoremap <s-tab> <c-n>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" 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 <leader>n :call RenameFile()<cr>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" GREP SEARCH
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
function! Search()
|
||||
let term = input('Grep search term: ')
|
||||
if term != ''
|
||||
exec 'Ag "' . term . '"'
|
||||
endif
|
||||
endfunction
|
||||
map <leader>s :call Search()<cr>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" PROMOTE VARIABLE TO RSPEC LET
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
function! PromoteToLet()
|
||||
:normal! dd
|
||||
" :exec '?^\s*it\>'
|
||||
:normal! P
|
||||
:.s/\(\w\+\) = \(.*\)$/let(:\1) { \2 }/
|
||||
:normal ==
|
||||
endfunction
|
||||
:command! PromoteToLet :call PromoteToLet()
|
||||
:map <leader>p :PromoteToLet<cr>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" MAPS TO JUMP TO SPECIFIC COMMAND-T TARGETS AND FILES
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
map <leader>gr :topleft :split config/routes.rb<cr>
|
||||
function! ShowRoutes()
|
||||
" Requires 'scratch' plugin
|
||||
:topleft 100 :split __Routes__
|
||||
" Make sure Vim doesn't write __Routes__ as a file
|
||||
:set buftype=nofile
|
||||
" Delete everything
|
||||
:normal 1GdG
|
||||
" Put routes output in buffer
|
||||
:0r! rake -s routes
|
||||
" Size window to number of lines (1 plus rake output length)
|
||||
:exec ":normal " . line("$") . _ "
|
||||
" Move cursor to bottom
|
||||
:normal 1GG
|
||||
" Delete empty trailing line
|
||||
:normal dd
|
||||
endfunction
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" SWITCH BETWEEN TEST AND PRODUCTION CODE
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
function! OpenTestAlternate()
|
||||
let new_file = AlternateForCurrentFile()
|
||||
exec ':e ' . new_file
|
||||
endfunction
|
||||
function! AlternateForCurrentFile()
|
||||
let current_file = expand("%")
|
||||
let new_file = current_file
|
||||
let in_spec = match(current_file, '^spec/') != -1
|
||||
let going_to_spec = !in_spec
|
||||
let in_app = match(current_file, '\<controllers\>') != -1 || match(current_file, '\<models\>') != -1 || match(current_file, '\<views\>') != -1 || match(current_file, '\<helpers\>') != -1
|
||||
if going_to_spec
|
||||
if in_app
|
||||
let new_file = substitute(new_file, '^app/', '', '')
|
||||
end
|
||||
let new_file = substitute(new_file, '\.rb$', '_spec.rb', '')
|
||||
let new_file = 'spec/' . new_file
|
||||
else
|
||||
let new_file = substitute(new_file, '_spec\.rb$', '.rb', '')
|
||||
let new_file = substitute(new_file, '^spec/', '', '')
|
||||
if in_app
|
||||
let new_file = 'app/' . new_file
|
||||
end
|
||||
endif
|
||||
return new_file
|
||||
endfunction
|
||||
nnoremap <leader>o :call OpenTestAlternate()<cr>
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" RUNNING TESTS
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
map <leader>t :call RunTestFile()<cr>
|
||||
map <leader>T :call RunNearestTest()<cr>
|
||||
map <leader>a :call RunTests('')<cr>
|
||||
map <leader>c :w\|:!script/features<cr>
|
||||
|
||||
function! RunTestFile(...)
|
||||
if a:0
|
||||
let command_suffix = a:1
|
||||
else
|
||||
let command_suffix = ""
|
||||
endif
|
||||
|
||||
" Run the tests for the previously-marked file.
|
||||
let in_test_file = match(expand("%"), '\(.feature\|_spec.rb\)$') != -1
|
||||
if in_test_file
|
||||
call SetTestFile()
|
||||
elseif !exists("t:grb_test_file")
|
||||
return
|
||||
end
|
||||
call RunTests(t:grb_test_file . command_suffix)
|
||||
endfunction
|
||||
|
||||
function! RunNearestTest()
|
||||
let spec_line_number = line('.')
|
||||
call RunTestFile(":" . spec_line_number . " -b")
|
||||
endfunction
|
||||
|
||||
function! SetTestFile()
|
||||
" Set the spec file that tests will be run for.
|
||||
let t:grb_test_file=@%
|
||||
endfunction
|
||||
|
||||
function! RunTests(filename)
|
||||
" Write the file and run tests for the given filename
|
||||
:w
|
||||
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo
|
||||
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo
|
||||
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo
|
||||
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo
|
||||
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo
|
||||
:silent !echo;echo;echo;echo;echo;echo;echo;echo;echo;echo
|
||||
if match(a:filename, '\.feature$') != -1
|
||||
exec ":!script/features " . a:filename
|
||||
else
|
||||
if filereadable("script/test")
|
||||
exec ":!script/test " . a:filename
|
||||
elseif filereadable("Gemfile")
|
||||
exec ":!bundle exec rspec --color " . a:filename
|
||||
else
|
||||
exec ":!rspec --color " . a:filename
|
||||
end
|
||||
end
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user