30 lines
892 B
VimL
30 lines
892 B
VimL
" Stolen from Steve Losh
|
|
" https://bitbucket.org/sjl/dotfiles/src/tip/vim/.vimrc
|
|
"
|
|
" Motion for "next/last object". For example, "din(" would go to the next "()"
|
|
" pair and delete its contents.
|
|
onoremap an :<c-u>call <SID>NextTextObject('a', 'f')<cr>
|
|
xnoremap an :<c-u>call <SID>NextTextObject('a', 'f')<cr>
|
|
onoremap in :<c-u>call <SID>NextTextObject('i', 'f')<cr>
|
|
xnoremap in :<c-u>call <SID>NextTextObject('i', 'f')<cr>
|
|
|
|
onoremap al :<c-u>call <SID>NextTextObject('a', 'F')<cr>
|
|
xnoremap al :<c-u>call <SID>NextTextObject('a', 'F')<cr>
|
|
onoremap il :<c-u>call <SID>NextTextObject('i', 'F')<cr>
|
|
xnoremap il :<c-u>call <SID>NextTextObject('i', 'F')<cr>
|
|
|
|
function! s:NextTextObject(motion, dir)
|
|
let c = nr2char(getchar())
|
|
|
|
if c ==# "b"
|
|
let c = "("
|
|
elseif c ==# "B"
|
|
let c = "{"
|
|
elseif c ==# "d"
|
|
let c = "["
|
|
endif
|
|
|
|
exe "normal! ".a:dir.c."v".a:motion.c
|
|
endfunction
|
|
|