如何在Vim / Vi中删除行
Vim或其早期版本Vi预先安装在大多数Linux发行版和macOS中。 如果您是系统管理员或只是普通的Linux用户,了解Vim的基础很重要。
通常,在处理文本文件时,您需要删除一行或多行。
本文介绍如何在Vim / Vi中删除行。
删除一行
在Vim中删除一行的命令是 dd
。
以下是删除行的分步说明:
- 按下
Esc
键进入正常模式。 - 将光标放在要删除的行上。
- 类型
dd
然后按Enter删除该行。
紧迫 dd
多次将删除多行。
删除多行
要一次删除多行,请在 dd
命令以及要删除的行数。 例如,要删除五行,请执行以下操作:
- 按下
Esc
键进入正常模式。 - 将光标放在要删除的第一行上。
- 类型
5dd
然后按Enter删除接下来的五行。
删除行数
删除行范围的语法如下:
:[start],[end]d
例如,要删除从3到5的行,您可以执行以下操作:
- 按下
Esc
键进入正常模式。 - 类型
:3,5d
然后按Enter删除行。
您还可以使用以下字符指定范围:
.
(点)-当前行。$
-最后一行。%
-所有行。
这里有一些例子:
:.,$d
-从当前行到文件末尾。:.,1d
-从当前行到文件开头。10,$d
-从第10行到文件末尾。
删除所有行
要删除所有行,您可以使用 %
代表所有线条或 1,$
范围:
- 按下
Esc
键进入正常模式。 - 类型
%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