我确定你们中有很多人输入ci(
或ci"
只是为了让它失败,因为你目前不在括号或引号内。
是否有ci命令的变体在下一次出现的文本对象中而不是当前对象中发生变化?我认为有点像f(
后面跟ci(
的快捷方式,或者这只是最有效的做事方式?
答案 0 :(得分:2)
没有内置的方法可以做到这一点。但是,您可以使用一些vimscript执行此操作。
onoremap an :<c-u>call <SID>NextTextObject('a')<cr>
xnoremap an :<c-u>call <SID>NextTextObject('a')<cr>
onoremap in :<c-u>call <SID>NextTextObject('i')<cr>
xnoremap in :<c-u>call <SID>NextTextObject('i')<cr>
function! s:NextTextObject(motion)
echo
let c = nr2char(getchar())
exe "normal! f".c."v".a:motion.c
endfunction
以下是您将如何使用它:
(bar) (foo) (baz)
^
输入din(
。以下是您的文字之后的样子:
(bar) (foo) ()
将此视为删除内部(
}。这非常有用!