可以ed
通过键入行号的地址并后跟命令来删除行号delete
,如 中所示1d
。要删除一系列行,可以使用逗号,如1,4d
。还可以删除具有特定内容的行,如 中g/Ted/d
。有没有办法指定删除非连续行在单个命令中?也就是说,假设我想一次性删除第 1 行、第 3 行和第 8 行,而无需输入:
1d
3d
8d
答案1
不是ed
(一位 60 年代的编辑),不是。但是ex
(如果您准备好进入 70 年代或更高版本),或者更确切地说(90 年代)vim
的实施,您可以这样做:ex
g/\v%1l|%3l|%8l/d
在哪里\%nl
(简化为with )是一个正则表达式运算符,它匹配当前行所在的位置%nl
\v
nth .
请注意,使用按顺序运行1d
, 3d
,的方法,原来的第三行现在是第二行,因此您最终会删除第 1行、第 4行和第 10行。如果你从末尾开始,就不会有这个问题:, , 。8d
1d
8d
3d
1d