如何使用 vi 删除文件中的所有行?

如何使用 vi 删除文件中的所有行?

如何使用 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

如果您的光标位于第一行(如果不是,请键入:gg1G),那么您可以直接使用dG。它将删除从当前行到文件末尾的所有行。因此,为了确保从文件中删除所有行,您可以将两者混合在一起,这将是:(ggdG在命令模式下)。

或者%d在 Ex 模式下,命令行示例:vim +%d foo.bar.

有关的:如何在 VIM 中删除从当前行到文件末尾的所有文本?

相关内容