2011-10-18 102 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 <'等等,分別用於方形,捲曲,角括號等。 –