ex(vim)向空行添加额外的空格字符

vbopmzt1  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(181)

我想用ex(vim在ex/silent模式下)做一些处理。但是如果一行是空的,会有一个奇怪的行为。一个额外的空格字符被添加到该行-即使在二进制模式下。有可能消除这个吗?
结账:

$ printf "a\n1st\n\n3rd\n.\n%%p\n" | ex -b | hexdump -C
00000000  31 73 74 0a 20 0a 33 72  64 0a

请注意printf中的Ex行:a用于附加文本,三行,.用于关闭附加模式,%p用于打印所有内容)

a
1st

3rd
.
%p

预期结果为

00000000  31 73 74 0a 0a 33 72 64  0a
camsedfj

camsedfj1#

printf似乎不是额外空间来源:

$ printf 'a\n1st\n\n3rd\n.\n%%p\n' | hexdump -C
00000000  61 0a 31 73 74 0a 0a 33  72 64 0a 2e 0a 25 70 0a |a.1st..3rd...%p.|
00000010

ex似乎也没有涉及到,至少它的使用方式更加“正常”:

$ printf "a\n1st\n\n3rd\n.\nwzob\nq\n" | ex | hexdump -C zob
00000000  31 73 74 0a 0a 33 72 64  0a                       |1st..3rd.|
00000009

但您并不是以那种方式使用ex,而是以某种方式将屏幕转储到stdout,这 * 可能 * 解释了该空间的外观。
如果不知道你实际上想要做什么,很难提供一个更好的解决方案。无论如何,作为一个全屏的面向文档的程序,ex通常不适合在管道中使用,所以你可能需要寻找一种不同的方法。

相关问题