我知道我可以通过发出vi'
或vi"
在引号/双引号内选择文字。例如,光标位于H
,我可以通过发出World
vi"
Hello "World"
但如果我有
,这似乎不起作用Hello (World)
如果我的光标位于H
并且我尝试使用World
选择vi)
,则无效。似乎唯一的方法是将光标移到括号内并发出vi)
。为什么选择里面的文字)并“以这种方式不同?
答案 0 :(得分:26)
{a
,i
}×{(
,)
,b
}文本对象命令与它们之间的区别
"
,'
,`
对应主要来自不同的定义
块和引用字符串(请参阅:help v_ab
,:help v_aquote
)。
虽然后者是当前前一个引号字符的文本
直到同一行上的下一行(逃脱的那些),前者是
第n个前一个不匹配的左括号和它之间的文本
匹配关闭一个。简单地说,命令va(
(没有计数)就像
[(v%
- 如果光标前没有不匹配的括号,则都选择
没有。但是,命令va"
会扫描当前行以查找匹配项
无论如何都是一对报价。
我认为这种行为差异的主要原因是引用 与括号相反,字符串被假定为非嵌套(至少在 内置Vim文本对象的透视图。
要选择当前行下一个括号中的文本,可以使用
%vi(
或
%va(
将括号括在选择中。
答案 1 :(得分:1)
This comment on Hacker News指向可能解决问题的脚本。
未经测试,但是史蒂夫·洛什这样做可能会很好。