如何在Vim / Vi中删除行

Vim或其早期版本Vi预先安装在大多数Linux发行版和macOS中。 如果您是系统管理员或只是普通的Linux用户,了解Vim的基础很重要。

通常,在处理文本文件时,您需要删除一行或多行。

本文介绍如何在Vim / Vi中删除行。

删除一行

在Vim中删除一行的命令是 dd

以下是删除行的分步说明:

  1. 按下 Esc 键进入正常模式。
  2. 将光标放在要删除的行上。
  3. 类型 dd 然后按Enter删除该行。

紧迫 dd 多次将删除多行。

删除多行

要一次删除多行,请在 dd 命令以及要删除的行数。 例如,要删除五行,请执行以下操作:

  1. 按下 Esc 键进入正常模式。
  2. 将光标放在要删除的第一行上。
  3. 类型 5dd 然后按Enter删除接下来的五行。

删除行数

删除行范围的语法如下:

:[start],[end]d

例如,要删除从3到5的行,您可以执行以下操作:

  1. 按下 Esc 键进入正常模式。
  2. 类型 :3,5d 然后按Enter删除行。

您还可以使用以下字符指定范围:

  • . (点)-当前行。
  • $ -最后一行。
  • % -所有行。

这里有一些例子:

  • :.,$d -从当前行到文件末尾。
  • :.,1d -从当前行到文件开头。
  • 10,$d -从第10行到文件末尾。

删除所有行

要删除所有行,您可以使用 % 代表所有线条或 1,$ 范围:

  1. 按下 Esc 键进入正常模式。
  2. 类型 %d 然后按Enter删除所有行。

删除包含模式的行

基于特定模式删除多行的语法如下:

:g/<pattern>/d

全局命令(g)告诉删除命令(d)删除所有包含 <pattern>

要匹配与模式不匹配的行,请添加感叹号(!)之前的模式:

:g!/<pattern>/d

模式可以是文字匹配或正则表达式。 以下是一些示例:

  • :g/foo/d -删除所有包含字符串“ foo”的行。 它还会删除在“ foo”等较大字词中嵌入“ foo”的行,例如“ football”。
  • :g!/foo/d -删除所有不包含字符串“ foo”的行。
  • :g/^#/d -从Bash脚本中删除所有评论。 图案 ^# 表示每行以 #
  • :g/^$/d -删除所有空白行。 图案 ^$ 匹配所有空行。
  • :g/^s*$/d -删除所有空白行。 与前面的命令不同,这还会删除具有零个或多个空格字符的空白行(s*)。

结论#

我们已经向您展示了如何在Vim中删除行。

如果您不熟悉Vim,请访问Open Vim站点,您可以在此通过交互式教程练习Vim。

如有任何疑问,请随时发表评论。

终端vim

Sidebar