怎样在 Vim 中删除多行

我们都会犯错。 犯错是人之常情。 改进它也很重要。

如果你在 Vim 中犯了一个错误,你可以使用删除一个单词 dw 在正常模式下。 你输入 dd 它会删除当前行。

如果要在 Vim 中删除多行,可以使用相同的 dd Vim 命令,将行数添加到该命令中。

所以, 10dd 将从光标底部删除 10 行(包括光标所在的行)。

让我们详细看看怎样在以效率着称的编辑器中删除一行或多行。

删除单行

以下是在 Vim 中删除单行文本的步骤:

  1. Enter 按 Escape (Esc) 键进入普通模式
  2. 确保光标位于要删除的行上。
  3. 快速按下 dd

这将删除光标所在的整行。

正如您在 gif 中看到的,我在第一行并运行 dd 命令只删除了第一行。

指定要删除的行数

在您使用之前 dd 命令删除一行,你可以在它前面指定一个数字,在 Vim 中一次删除多行。

下面是语法:

:[num]dd

当您指定数字代替 num, Vim 将开始删除行。 你可以把它想象成 Vim 正在执行 dd 命令 num 次。

从 gif 可以看出,我运行了命令 12dd (它出现在右下角)并删除了 12 行的块。

指定要删除的行范围

无需指定从当前行到底部要删除多少行,您只需告诉 Vim 它应该从哪一行开始删除,一直到哪一行。

以下是删除一系列行的语法:

:[begin],[end]d

让我们分解一下这个语法……

  • : (冒号)表示它是一个 Vim 命令。
  • begin 告诉 Vim 从哪一行开始
  • end 告诉 Vim 要删除的最后一行是什么
  • d Vim 中的删除命令

此外,以下是用于指定范围的字符(用于“开始”和“结束”):

  • . (当前行)
  • $ (文件中的最后一行)
  • % (所有行)

为了从几个例子中学习,让我们来看看它们。

  • :10,45d – 从第 10 行删除到第 45 行
  • :.,$d – 从当前行删除到最后一行
  • :.,1d – 从当前行删除到文件开头
  • :dgg – 从当前行删除到文件开头
删除VIm中的一系列行

正如你在这个 gif 中看到的那样,即使我在第 31 行,并且我输入了 :10,29d 它删除了第 10 到 29 行。

删除所有行

如前所述, % 符号用于指定从文件开头到结尾的范围,基本上是所有行。

这意味着,要在 Vim 中删除文件的所有行,您需要使用 :%d 命令。

删除 Vim 中的所有行

删除与特定模式匹配的行

除了所有这些 Vim 魔法,你知道你可以删除匹配特定模式的行吗?

好吧,你可以,这里是语法。

:g/PATTERN/d

要执行相反的操作,删除与指定模式不匹配的行,您可以使用下面指定的语法。

:g!/PATTERN/d

分解它,我们得到以下元素:

  • g – 全局搜索(即整个文件)
  • ! – 反向匹配
  • PATTERN – 要匹配的模式
  • d – 删除命令

如果您在 Vim 中运行以下命令,它将删除行中所有具有“extern crate”模式的行。

:g/extern crate/d
删除与 Vim 中的模式匹配的行

删除所有空行

要删除空行,需要使用正则表达式进行模式匹配。 下面是执行删除空行的命令:

:g/^$/d

在正则表达式中, ^$ 模式表示任何以换行符开头的行,本质上是一个空行。

删除 Vim 中的空行

结论

本文深入介绍了怎样在 Vim 中删除行。

如果您有兴趣学习的不仅仅是 Vim 基础知识,我强烈建议您使用 Jovica Ilic 的这个程序。