在Vim中从括号外选择括号内的文本

时间:2011-10-18 07:36:37

标签: vim

我知道我可以通过发出vi'vi"在引号/双引号内选择文字。例如,光标位于H,我可以通过发出World

来选择vi"
Hello "World"

但如果我有

,这似乎不起作用
Hello (World)

如果我的光标位于H并且我尝试使用World选择vi),则无效。似乎唯一的方法是将光标移到括号内并发出vi)。为什么选择里面的文字)并“以这种方式不同?

2 个答案:

答案 0 :(得分:26)

{ai}×{()b}文本对象命令与它们之间的区别 "'`对应主要来自不同的定义 引用字符串(请参阅:help v_ab:help v_aquote)。

虽然后者是当前前一个引号字符的文本 直到同一行上的下一行(逃脱的那些),前者是 第n个前一个不匹配的左括号和它之间的文本 匹配关闭一个。简单地说,命令va((没有计数)就像 [(v% - 如果光标前没有不匹配的括号,则都选择 没有。但是,命令va"会扫描当前行以查找匹配项 无论如何都是一对报价。

我认为这种行为差异的主要原因是引用 与括号相反,字符串被假定为非嵌套(至少在 内置Vim文本对象的透视图。

要选择当前行下一个括号中的文本,可以使用

%vi(

%va(

将括号括在选择中。

答案 1 :(得分:1)

This comment on Hacker News指向可能解决问题的脚本。

未经测试,但是史蒂夫·洛什这样做可能会很好。