8ce49daaa0
This is not good for normal vim behavior. You should be able to hit '.'
to repeat the last command. This change breaks that with respect to
indenting.
This reverts commit 72ff8f33db
.
237 lines
7.2 KiB
VimL
237 lines
7.2 KiB
VimL
" ========================================
|
||
" General vim sanity improvements
|
||
" ========================================
|
||
"
|
||
"
|
||
" alias yw to yank the entire word 'yank inner word'
|
||
" even if the cursor is halfway inside the word
|
||
" FIXME: will not properly repeat when you use a dot (tie into repeat.vim)
|
||
nnoremap ,yw yiww
|
||
|
||
" ,ow = 'overwrite word', replace a word with what's in the yank buffer
|
||
" FIXME: will not properly repeat when you use a dot (tie into repeat.vim)
|
||
nnoremap ,ow "_diwhp
|
||
|
||
"make Y consistent with C and D
|
||
nnoremap Y y$
|
||
|
||
" ========================================
|
||
" RSI Prevention - keyboard remaps
|
||
" ========================================
|
||
" Certain things we do every day as programmers stress
|
||
" out our hands. For example, typing underscores and
|
||
" dashes are very common, and in position that require
|
||
" a lot of hand movement. Vim to the rescue
|
||
"
|
||
" Now using the middle finger of either hand you can type
|
||
" underscores with apple-k or apple-d, and add Shift
|
||
" to type dashes
|
||
imap <silent> <D-k> _
|
||
imap <silent> <D-d> _
|
||
imap <silent> <D-K> -
|
||
imap <silent> <D-D> -
|
||
|
||
" ,# Surround a word with #{ruby interpolation}
|
||
map ,# ysiw#
|
||
vmap ,# c#{<C-R>"}<ESC>
|
||
|
||
" ," Surround a word with "quotes"
|
||
map ," ysiw"
|
||
vmap ," c"<C-R>""<ESC>
|
||
|
||
" ,' Surround a word with 'single quotes'
|
||
map ,' ysiw'
|
||
vmap ,' c'<C-R>"'<ESC>
|
||
|
||
" ,) or ,( Surround a word with (parens)
|
||
" The difference is in whether a space is put in
|
||
map ,( ysiw(
|
||
map ,) ysiw)
|
||
vmap ,( c( <C-R>" )<ESC>
|
||
vmap ,) c(<C-R>")<ESC>
|
||
|
||
" ,[ Surround a word with [brackets]
|
||
map ,] ysiw]
|
||
map ,[ ysiw[
|
||
vmap ,[ c[ <C-R>" ]<ESC>
|
||
vmap ,] c[<C-R>"]<ESC>
|
||
|
||
" ,{ Surround a word with {braces}
|
||
map ,} ysiw}
|
||
map ,{ ysiw{
|
||
vmap ,} c{ <C-R>" }<ESC>
|
||
vmap ,{ c{<C-R>"}<ESC>
|
||
|
||
" gary bernhardt's hashrocket
|
||
imap <c-l> <space>=><space>
|
||
|
||
" Change inside various enclosures with Cmd-" and Cmd-'
|
||
" The f makes it find the enclosure so you don't have
|
||
" to be standing inside it
|
||
nnoremap <D-'> f'ci'
|
||
nnoremap <D-"> f"ci"
|
||
nnoremap <D-(> f(ci(
|
||
nnoremap <D-)> f)ci)
|
||
nnoremap <D-[> f[ci[
|
||
nnoremap <D-]> f]ci]
|
||
|
||
"Go to last edit location with ,.
|
||
nnoremap ,. '.
|
||
|
||
"When typing a string, your quotes auto complete. Move past the quote
|
||
"while still in insert mode by hitting Ctrl-a. Example:
|
||
"
|
||
" type 'foo<c-a>
|
||
"
|
||
" the first quote will autoclose so you'll get 'foo' and hitting <c-a> will
|
||
" put the cursor right after the quote
|
||
imap <C-a> <esc>wa
|
||
|
||
" ==== NERD tree
|
||
" Cmd-Shift-N for nerd tree
|
||
nmap <D-N> :NERDTreeToggle<CR>
|
||
" Open the project tree and expose current file in the nerdtree with Ctrl-\
|
||
nnoremap <silent> <C-\> :NERDTreeFind<CR>:vertical res 30<CR>
|
||
|
||
" ,q to toggle quickfix window (where you have stuff like GitGrep)
|
||
" ,oq to open it back up (rare)
|
||
nmap <silent> ,qc :CloseSingleConque<CR>:cclose<CR>
|
||
nmap <silent> ,qo :copen<CR>
|
||
|
||
" move up/down quickly by using Cmd-j, Cmd-k
|
||
" which will move us around by functions
|
||
nnoremap <silent> <D-j> }
|
||
nnoremap <silent> <D-k> {
|
||
autocmd FileType ruby map <buffer> <D-j> ]m
|
||
autocmd FileType ruby map <buffer> <D-k> [m
|
||
autocmd FileType rspec map <buffer> <D-j> }
|
||
autocmd FileType rspec map <buffer> <D-k> {
|
||
autocmd FileType javascript map <buffer> <D-k> }
|
||
autocmd FileType javascript map <buffer> <D-j> {
|
||
|
||
|
||
" Command-/ to toggle comments
|
||
map <D-/> :TComment<CR>
|
||
imap <D-/> <Esc>:TComment<CR>i
|
||
|
||
"GitGrep - open up a git grep line, with a quote started for the search
|
||
nnoremap ,gg :GitGrep ""<left>
|
||
"GitGrep Current Partial
|
||
nnoremap ,gcp :GitGrepCurrentPartial<CR>
|
||
"GitGrep Current File
|
||
nnoremap ,gcf :call GitGrep(expand("%:t:r"))<CR>
|
||
|
||
|
||
"Move back and forth through previous and next buffers
|
||
"with ,z and ,x
|
||
nnoremap <silent> ,z :bp<CR>
|
||
nnoremap <silent> ,x :bn<CR>
|
||
|
||
" ==============================
|
||
" Window/Tab/Split Manipulation
|
||
" ==============================
|
||
" Move between split windows by using the four directions H, L, I, N
|
||
" (note that I use I and N instead of J and K because J already does
|
||
" line joins and K is mapped to GitGrep the current word
|
||
nnoremap <silent> <C-h> <C-w>h
|
||
nnoremap <silent> <C-l> <C-w>l
|
||
nnoremap <silent> <C-k> <C-w>k
|
||
nnoremap <silent> <C-j> <C-w>j
|
||
|
||
" Zoom in and out of current window with ,gz
|
||
map <silent> ,gz <C-w>o
|
||
|
||
" Use numbers to pick the tab you want (like iTerm)
|
||
map <silent> <D-1> :tabn 1<cr>
|
||
map <silent> <D-2> :tabn 2<cr>
|
||
map <silent> <D-3> :tabn 3<cr>
|
||
map <silent> <D-4> :tabn 4<cr>
|
||
map <silent> <D-5> :tabn 5<cr>
|
||
map <silent> <D-6> :tabn 6<cr>
|
||
map <silent> <D-7> :tabn 7<cr>
|
||
map <silent> <D-8> :tabn 8<cr>
|
||
map <silent> <D-9> :tabn 9<cr>
|
||
|
||
" Create window splits easier. The default
|
||
" way is Ctrl-w,v and Ctrl-w,s. I remap
|
||
" this to vv and ss
|
||
nnoremap <silent> vv <C-w>v
|
||
nnoremap <silent> ss <C-w>s
|
||
|
||
" Resize windows with arrow keys
|
||
nnoremap <D-Up> <C-w>+
|
||
nnoremap <D-Down> <C-w>-
|
||
nnoremap <D-Left> <C-w><
|
||
nnoremap <D-Right> <C-w>>
|
||
|
||
" create <%= foo %> erb tags using Ctrl-k in edit mode
|
||
imap <silent> <C-K> <%= %><Esc>3hi
|
||
|
||
" create <%= foo %> erb tags using Ctrl-j in edit mode
|
||
imap <silent> <C-J> <% %><Esc>2hi
|
||
|
||
" ============================
|
||
" Shortcuts for everyday tasks
|
||
" ============================
|
||
|
||
" copy current filename into system clipboard - mnemonic: (c)urrent(f)ilename
|
||
" this is helpful to paste someone the path you're looking at
|
||
nnoremap <silent> ,cf :let @* = expand("%:~")<CR>
|
||
nnoremap <silent> ,cn :let @* = expand("%:t")<CR>
|
||
|
||
"Clear current search highlight by double tapping //
|
||
nmap <silent> // :nohlsearch<CR>
|
||
|
||
"(v)im (c)ommand - execute current line as a vim command
|
||
nmap <silent> ,vc yy:<C-f>p<C-c><CR>
|
||
|
||
"(v)im (r)eload
|
||
nmap <silent> ,vr :so %<CR>
|
||
|
||
" Type ,hl to toggle highlighting on/off, and show current value.
|
||
noremap ,hl :set hlsearch! hlsearch?<CR>
|
||
|
||
" Apple-* Highlight all occurrences of current word (like '*' but without moving)
|
||
" http://vim.wikia.com/wiki/Highlight_all_search_pattern_matches
|
||
nnoremap <D-*> :let @/='\<<C-R>=expand("<cword>")<CR>\>'<CR>:set hls<CR>
|
||
|
||
" These are very similar keys. Typing 'a will jump to the line in the current
|
||
" file marked with ma. However, `a will jump to the line and column marked
|
||
" with ma. It’s more useful in any case I can imagine, but it’s located way
|
||
" off in the corner of the keyboard. The best way to handle this is just to
|
||
" swap them: http://items.sjbach.com/319/configuring-vim-right
|
||
nnoremap ' `
|
||
nnoremap ` '
|
||
|
||
" ============================
|
||
" Tabularize - alignment
|
||
" ============================
|
||
" Hit Cmd-Shift-A then type a character you want to align by
|
||
nmap <D-A> :Tabularize /
|
||
vmap <D-A> :Tabularize /
|
||
|
||
" ============================
|
||
" SplitJoin plugin
|
||
" ============================
|
||
nmap sj :SplitjoinSplit<cr>
|
||
nmap sk :SplitjoinJoin<cr>
|
||
|
||
" ============================
|
||
" vim-ruby-conque
|
||
" ============================
|
||
" Cmd-Shift-R for RSpec
|
||
nmap <silent> <D-R> :call RunRspecCurrentFileConque()<CR>
|
||
" Cmd-Shift-L for RSpec Current Line
|
||
nmap <silent> <D-L> :call RunRspecCurrentLineConque()<CR>
|
||
" ,Cmd-R for Last conque command
|
||
nmap <silent> ,<D-R> :call RunLastConqueCommand()<CR>
|
||
|
||
" Get the current highlight group. Useful for then remapping the color
|
||
map ,hi :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">" . " FG:" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"fg#")<CR>
|
||
|
||
" Source current file Cmd-% (good for vim development)
|
||
map <D-%> :so %<CR>
|
||
|
||
" ,hp = html preview
|
||
map <silent> ,hp :!open -a Safari %<CR><CR>
|