2011-10-18 44 views
12

圆括号外的我知道,我可以通过发出vi'vi"选择引号内/双引号的文本。例如,光标在H,我可以通过发行vi"选择文本从Vim中

Hello "World" 

选择World但是,这似乎并没有工作,如果我有

Hello (World) 

如果我的光标是在H,我尽量选择World使用vi),它不起作用。这似乎是唯一的方法是实际将光标移动到括号内并发出vi)。为什么内选择文本)和“这种方式区别?

+0

我确定这个问题已经回答过,但我找不到它! –

回答

25

{ai}×{()b}文本对象命令及其 "'`同行主要从不同的结果之间的差异的 定义一个引号的字符串(见:help v_ab:help v_aquote)。

而后者则是从以前的报价characte文本在当前 线,直到同一条线上下一个(逃跑者除外)R,前者是 第n以前无法比拟的左括号及其 匹配关闭一个之间的文本。简单地说,命令va((不计数)就像是 [(v% - 如果有光标之前没有无与伦比的括号,无论选择什么 。但是,命令va"无论如何都会扫描当前行以找到匹配的 对引号。

的主要原因是这种行为差异,我想,是引述 字符串,而相比之下,括号,被认为是不嵌套(至少在 角度内置的Vim文本对象)。

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

%vi(

%va(

包括括号成选择。

+0

+1,这很美,谢谢。 – romainl

+0

不幸的是,这个解决方案只适用于括号而不是任何其他类型的括号。 –

+3

@Daniel:分别使用'%vi [','%vi {','%vi <'等等,分别用于方形,卷曲,角括号等。 –