3

假设您想从名称中删除一个C函数,直到并包括带有结束花括号的行:

int main (void)   /* Cursor on this line. */
{
   while (...) {
      ...
   }
}

我已经尝试过d/^}<CR>,但这并没有删除带有结束卷曲的行。如何进行包容性查找模式删除?我一定错过了一些简单的东西。

编辑您可以假设函数的结束卷曲位于行首,而其他卷曲永远不会。

4

4 回答 4

6

我只是快速搜索了一下,在这里找到了运算符的偏移量语法。/

d/^}/0

为我做了伎俩。它的意思是“找到匹配的模式,然后选择到它之后的第0行的末尾”(即找到它的行的末尾)

于 2012-08-25T17:01:32.707 回答
5

使用V][d.

它的意思是:

  • V : 进入可视模式。
  • ][ : 移动到下一个}
  • d:删除所有视觉选择。
于 2012-08-25T16:56:51.673 回答
3

您的命令不适用于具有嵌套大括号的函数。我会删除到第一个 '{' 0d]],然后daB删除块。

新 vimers 的详细信息:第'0'一个命令中的 确保您在编辑d命令之前位于行首。 ']]'是一个让您进入下一个块'aB'的动作,并且是一个选择整个块的选择动作,包括嵌套块。所以0d]]daB意味着从行首删除到下一个块,然后删除该块。

于 2012-08-25T16:55:50.143 回答
1

你可以做jVaBokd

j- 下移一条线

VaB- 外块上的视线选择

o- 移动到视觉选择的另一端

k- 向上移动一条线

d- 删除选择

于 2012-08-25T17:47:51.723 回答