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

Ber*_*tek 13 vim

我知道我可以通过发出vi'或者在引号/双引号内选择文本vi".例如,使用光标H,我可以World通过发出来选择vi"

Hello "World"
Run Code Online (Sandbox Code Playgroud)

但如果我这样做,这似乎不起作用

Hello (World)
Run Code Online (Sandbox Code Playgroud)

如果我的光标位于H并且我尝试选择World使用 vi),则它不起作用.似乎唯一的方法是将光标实际移到括号内并发出问题vi).为什么选择里面的文字并且"以这种方式不同?

ib.*_*ib. 26

{之间的差a,i}×{ ,,( }文本对象命令及其 ,,同行主要来自一个的不同的定义块和一个引用字符串(见,).)b"'`:help v_ab:help v_aquote

虽然后者是当前行上的前一个引号字符的文本,直到同一行上的下一个字符(旁边的转义字符),前者是第n个前一个不匹配的左括号和其匹配的结束符之间的文本.简单地说,命令va((没有计数)就像 [(v%- 如果光标前没有不匹配的括号,两者都不选.但是,该命令会va"扫描当前行以查找匹配的引号对.

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

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

%vi(
Run Code Online (Sandbox Code Playgroud)

要么

%va(
Run Code Online (Sandbox Code Playgroud)

在括号中加入括号.

  • @Daniel:分别使用`%vi [`,`%vi {`,`%vi <`等,分别用于方形,卷曲,角形括号等. (4认同)