在 vim 中打开 stdin 时强制 fileformat=unix

在 vim 中打开 stdin 时强制 fileformat=unix

https://stackoverflow.com/a/10280014/447503他们解释了如何重新打开常规文件并在其中fileformat=unix显示s 。^M它也适用于常规文件的命令行:

$ vim -c "e ++ff=unix" aaa.txt
a^M
b^M
c^M

但是,从 stdin 读取时失败:

$ cat aaa.txt | vim -R -c "e ++ff=unix" -
Vim: Reading from stdin...
Error detected while processing command line:
E32: No file name
Press ENTER or type command to continue
a
b
c

这是因为该命令告诉 vim 重新读取当前打开的文件。如何告诉它从一开始就以所需的文件格式打开输入?

答案1

这可能比用...打开污点的内容稍强一些ff=unix,但是您可以使用以下命令启用二进制模式-b命令行标志:

$ cat aaa.txt | vim -R -b -

也可以看看:help 'binary',它解释了'binary'实现此功能的选项。 (-b在读取作为参数传递的文件之前,命令行参数有效地启用了此设置。)

:help 'binary'

此外,'fileformat'并且'fileformats'不会使用选项,该文件的读取和写入就像'fileformat'“unix”(单个<NL>分隔行)。

正如您所看到的,这与设置有所不同,ff=unix但效果非常相似。此外,'binary'在编辑过程中启用还会产生其他副作用,例如对'textwidth'和 之类的选项'expandtab',但在这种情况下,这对您来说可能是可以接受的(甚至是理想的)。再次检查:help 'binary'完整的详细信息。:help edit-binary可能也会有帮助。

相关内容