鉴于我有:
"foo === BAR.BAZ"
Run Code Online (Sandbox Code Playgroud)
如果我的光标位于字符串的中间,我想要猛拉(比方说'R',在这种情况下),我想要猛拉所有BAR.BAZ,我怎么能轻易地做到这一点?
我不能只是yiw因为它打破了..我需要在<space>和之间挣扎"
这只是一个例子.我意识到有一些方法可以使vim yank单词按句点分隔,但我正在寻找一种更通用的解决方案来处理涉及更复杂符号的情况.
就像是 "yank between <first_occurrence_of_left_symbol> <first_occurrence_of_right_symbol>"
在上述情况中将是:
yb<space>"
您可以像这样定义自己的文本对象:
onoremap I :exec 'norm vT'.nr2char(getchar()).'ot'.nr2char(getchar())<cr>
Run Code Online (Sandbox Code Playgroud)
然后,为了做你的例子,你会输入
yI<space>"
Run Code Online (Sandbox Code Playgroud)
我想的是记忆"(d)elete(I)nbetween <char 1>,<char 2>".值得庆幸的是,I不能将其用作运算符的参数,因此不会覆盖任何内容.当然,如果对您更直观,您可以选择不同的密钥.
将此作为onoremap映射的便利之处在于,这使您能够在该文本上使用任何运算符.所以d,c,gu,y,和其他许多人会工作得很好.
当你在它的时候,你可以添加一个大约两个字符的映射,这是一个微不足道的修改:
onoremap A :exec 'norm vF'.nr2char(getchar()).'of'.nr2char(getchar())<cr>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64 次 |
| 最近记录: |