圓括號外的我知道,我可以通過發出vi'
或vi"
選擇引號內/雙引號的文本。例如,光標在H
,我可以通過發行vi"
選擇文本從Vim中
Hello "World"
選擇World
但是,這似乎並沒有工作,如果我有
Hello (World)
如果我的光標是在H
,我儘量選擇World
使用vi)
,它不起作用。這似乎是唯一的方法是實際將光標移動到括號內併發出vi)
。爲什麼內選擇文本)和「這種方式區別?
圓括號外的我知道,我可以通過發出vi'
或vi"
選擇引號內/雙引號的文本。例如,光標在H
,我可以通過發行vi"
選擇文本從Vim中
Hello "World"
選擇World
但是,這似乎並沒有工作,如果我有
Hello (World)
如果我的光標是在H
,我儘量選擇World
使用vi)
,它不起作用。這似乎是唯一的方法是實際將光標移動到括號內併發出vi)
。爲什麼內選擇文本)和「這種方式區別?
{a
,i
}×{(
,)
,b
}文本對象命令及其 "
,'
,`
同行主要從不同的結果之間的差異的 定義一個塊和引號的字符串(見:help v_ab
,:help v_aquote
)。
而後者則是從以前的報價characte文本在當前 線,直到同一條線上下一個(逃跑者除外)R,前者是 第n以前無法比擬的左括號及其 匹配關閉一個之間的文本。簡單地說,命令va(
(不計數)就像是 [(v%
- 如果有光標之前沒有無與倫比的括號,無論選擇什麼 。但是,命令va"
無論如何都會掃描當前行以找到匹配的 對引號。
的主要原因是這種行爲差異,我想,是引述 字符串,而相比之下,括號,被認爲是不嵌套(至少在 角度內置的Vim文本對象)。
要選擇在當前行的下一個括號的文本,可以使用
%vi(
或
%va(
包括括號成選擇。
+1,這很美,謝謝。 – romainl
不幸的是,這個解決方案只適用於括號而不是任何其他類型的括號。 –
@Daniel:分別使用'%vi [','%vi {','%vi <'等等,分別用於方形,捲曲,角括號等。 –
This comment on Hacker News指向一個腳本理應解決問題。
未經測試,但它是由史蒂夫洛什所以它可能是好的。
我確定這個問題已經回答過,但我找不到它! –