如果您有一个用括号或引号分隔的文本块,则可以使用
ci"
da(
等等来改变那个文本块。但是有没有办法从光标更改或删除到该块的结尾(cw
用于单词的方式)?
答案 0 :(得分:26)
使用ct)
“ c
或 t
错误的右括号”。
使用t,f,T和F的Vim运动非常非常有用。 :help t
,:help f
。
更新:如果您有以下嵌套括号:
vi)o``
将选择直到关闭括号(将在括号内选择,然后切换到选择的另一端并将其移动到您所在的位置(``
)vi)``
将选择直到打开括号(相同的机制,但不需要o
)第一个只有在你正在进行vi)
时才会起作用,因此会记住光标跳转,``
会转到上一个光标位置。似乎o
在视觉模式下不会影响这一点。
答案 1 :(得分:14)
Benoit使用t f T
和F
的答案是我所知道的最佳方式。当删除到带括号的块的末尾时,您可以使用])
。这将考虑任何嵌套的括号。还有相应的[(
,]}
和[{
。
答案 2 :(得分:6)
请参阅Vim帮助的“Text object selection”部分。您可以使用删除和更改操作在那里定义选择序列。它显示了如何选择由以下任何一个(以及更多)分隔的块:
{}
()
' or "
)例如:
d}
和c}
将删除并从光标更改为段落的末尾。
答案 3 :(得分:4)
我不知道你想做什么的通用方法,但假设你在k
上:
The (quick (brown) fox) jumps over the lazy dog.
v2t)
会选择:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^^^^^^
如果您不想计算,可以链接t)
以扩展您的选择:vt)t)
首先选择:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^
然后:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^^^^^^
vT(
会选择:
(The quick (brown) fox) jumps over the lazy dog.
^^^^^^^^^