如何从vi中显示为@的文件中删除空行/空白行

yae*_*ael 0 sed awk perl shell-script ed

当我用 vi 打开文件时

作为

vi file

Current partition replica assignment
@
@
@
@
@
{"version":1,"partitions":[{"topic")]
@
@
@
@
@
Proposed partition reassignment configuration
Run Code Online (Sandbox Code Playgroud)

但我尝试删除这个空行

作为

sed -i 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file
Run Code Online (Sandbox Code Playgroud)

或者

sed -i '/^$/d'  file
Run Code Online (Sandbox Code Playgroud)

或者

sed -i '/^$/d' file
Run Code Online (Sandbox Code Playgroud)

静止文件带有空行

如何删除空行/空白行?

mos*_*svy 6

这些不是空行,而是太长而无法在屏幕上显示的行,即使在换行后也是如此。

$ perl -e 'print "foo\n", "bar " x 4096' >/tmp/file
$ vim /tmp/file

foo
@
@
@
...
Run Code Online (Sandbox Code Playgroud)

这是标准所说的:

在可视模式下,如果编辑缓冲区中的一行(当前行除外)不完全适合显示底部可用于其演示的行,则编辑器可以选择不显示该行的任何部分. 由于这个原因,不包含来自编辑缓冲区的文本的显示行每行应由单个“@”字符组成。

另请查看vim有关该display选项的文档:

当“lastline”和“truncate”都不包含时,不适合的最后一行将替换为“@”行。

不要将它们与空字节混淆,空字节通常显示为^@(注意插入符号)。此外,这种行为并不普遍(它似乎没有在 中实现nvi)。