如何使用 vi 删除文件中的所有行?
目前,我使用类似的方法来删除文件中的所有行:
echo > test.txt
如何使用删除所有行vi
?
笔记:
使用dd
不是一个好的选择。可以有很多行。
答案1
在vi
做
:1,$d
删除所有行。
引入:
一个命令(并将光标移动到底部)。
指示1,$
以下命令 ( d
) 应该在哪些行上运行。在本例中,范围是从第一行到最后一行(用 表示$
,因此您不需要知道文档中的行数)。
最后一个d
代表删除指定的行。
有一个更短的形式(:%d
),但我发现自己从未使用过它。可以:1,$d
更容易地“适应”,例如:4,$-2d
仅保留前 3 行和最后 2 行,删除其余的。
答案2
在 vi 中我使用
:%d
在哪里
:
告诉 vi 进入命令模式%
表示所有行d
: 删除
在命令行上,
> test.txt
也会做。
dd 有什么问题吗?
dd if=/dev/null of=test.txt
在哪里
/dev/null
是一个特殊的0字节文件if
是输入文件of
是输出文件
答案3
我建议您这样做(应该可以在任何兼容 POSIX 的 shell 中工作):
> test.txt
如果你真的想用 vi 来做,你可以这样做:
- 1G(转到第一行)
- dG(删除到最后一行)
答案4
如果您的光标位于第一行(如果不是,请键入:gg
或1G
),那么您可以直接使用dG
。它将删除从当前行到文件末尾的所有行。因此,为了确保从文件中删除所有行,您可以将两者混合在一起,这将是:(ggdG
在命令模式下)。
或者%d
在 Ex 模式下,命令行示例:vim +%d foo.bar
.