Vim:更改/删除到“块”的结尾

时间:2011-11-16 13:30:28

标签: vim editor

如果您有一个用括号或引号分隔的文本块,则可以使用

ci"
da(

等等来改变那个文本块。但是有没有办法从光标更改或删除到该块的结尾(cw用于单词的方式)?

4 个答案:

答案 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 TF的答案是我所知道的最佳方式。当删除到带括号的块的末尾时,您可以使用])。这将考虑任何嵌套的括号。还有相应的[(]}[{

答案 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.
     ^^^^^^^^^