如何在Vim/Vi中删除行

如果您是系统管理员或只是普通的Linux用户,了解Vim的基础很重要。通常,在处理文本文件时,您需要删除一行或多行内容。本文介绍了如何在Vim/Vi中删除行

3 min read
By myfreax
如何在Vim/Vi中删除行

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

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

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

删除单行

在Vim中删除行的命令是dd

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

  1. Esc键进入普通模式。
  2. 将光标放在要删除的行上。
  3. 键入dd以将其行删除。

多次按dd将删除多行。

删除多行

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

  1. Esc键进入普通模式。
  2. 将光标放在要删除的第一行。
  3. 键入5dd删除接下来的五行。

删除一系列的行

删除一系列行的语法如下:

:[start],[end]d

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

  1. Esc键进入正常模式。
  2. 键入:3,5d 并按enter键删除3到5行。

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

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

以下是一些示例:

  • :.,$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”的行。
  • :g!/foo/d -删除所有不包含字符串“ foo”的行。
  • :g/^#/d -从Bash脚本中删除所有评论。 模式^#表示每行以#开头。
  • :g/^$/d -删除所有空白行。 模式^$匹配所有空行。
  • :g/^\s*$/d -删除所有空白行。 与前一个命令不同,这还会删除具有零个或多个空格字符(\s*)的空白行。

结论

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

如果您是Vim的新手,请访问 Open Vim 网站,您可以在此通过互动教程练习Vim。

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