如何删除Vim/Vi中的行
大多数Linux发行版和macOS上都预装了Vim或者其前身Vi。
如果您是系统管理员或者只是一个普通的Linux用户,了解Vim的基础知识是很重要的。
在处理文本文件时,通常需要删除一行或者多行。
本文展示了如何在Vim/Vi中删除行。
删除行
在Vim中删除一行的命令是dd。
以下是删除行的分步说明:
按Esc键进入正常模式。
将光标放在要删除的行上。
键入dd并按Enter键删除行。
多次按dd将删除多行。
删除多行
要一次删除多行,请在dd命令前面加上要删除的行数。
例如,要删除五行,请执行以下操作:
按Esc键进入正常模式。
将光标放在要删除的第一行。
键入5dd并按Enter键删除接下来的五行。
删除行范围
删除行范围的语法如下:
:[start],[end]d
例如,要删除从3到5的行,请执行以下操作:
按Esc键进入正常模式。
键入:3,5d,然后按Enter键删除行。
也可以使用以下字符指定范围:
. (点)-当前行。
$-最后一行。
%-所有线路。
以下是几个例子:
:,$d-从当前行到文件结 tail。
:,1d-从当前行到文件开头。
10美元,从第10行到文件末尾。
删除所有行
要删除所有行,可以使用表示所有行的%符号或者1$范围:
按Esc键进入正常模式。
键入%d并按Enter键删除所有行。
删除包含图案的线
基于特定模式删除多行的语法如下:
:g//d
全局命令(g)告诉delete命令(d)删除包含<;pattern>的所有行。
要匹配与模式不匹配的行,请添加感叹号(!)在图案之前:
:g!//d
模式可以是文字匹配或者正则表达式。
以下是一些例子:
正则表达式- :g/foo/d-删除包含字符串"foo"的所有行。
它还删除了"foo"嵌入较大单词的行,例如"football"。
:g!/foo/d-删除不包含字符串"foo"的所有行。
:g/^#/d-从Bash脚本中删除所有注释。
图案^#表示每行以#开头。:g/^$/d-删除所有空行。
模式^$匹配所有空行。:g/^\s*$/d-删除所有空行。
与前面的命令不同,这也移除了具有零个或者多个空白字符(\s*)的空白行。