Linux上的Vi:显示DOS格式文件的^ M行结尾


9

在Solaris上,如果在vi中打开具有Windows行结尾的文件,则会在每行的末尾显示为^ M.

在Linux上,vi更聪明并且理解Windows文件格式,并且不显示^ M.

是否有一个设置可以使Linux vi在这方面与Solaris相同?

我们遇到的一个常见问题是从(Windows)开发框中复制一个shell脚本并忘记dos2unix它,然后在它无法正常工作时感到困惑。在Solaris上,只要你查看文件就会出现问题,但在Linux上则不然。

谢谢。


在Linux上,vi通常是Bram Moolenaar的vim,我希望Solaris上的vi是Bill Joy vi,原创,真实但功能不强。
RedGrittyBrick

在我vim的默认情况下,我通常看不到^M,但有时在文件的末尾有一个。
trysis 2017年

Answers:


9

:set ffs=unix在启动vi(或在vimrc中设置为默认值)时尝试将所有CR字符显示为^M

vi自动猜测要使用哪种格式,具体取决于它是否遇到以LF结尾或CR / LF结尾的行。


1
@RedGrittyBrick - 在我的系统上,:set list显示$所有行的末尾(Unix和DOS格式),因此无法区分这两者。
sss

@sss:我的错,我会删除评论。
RedGrittyBrick

2
@gman - 这个命令对我来说并不合适 - 我得到了Not an editor command: ffs=unix- 但让我走上了正确的道路。:set ffs=unix在vi中打开文件运行不起作用 - 没有错误但没有任何反应。我输入set ffs=unix了我的.vimrc文件。
sss

我经历了与@sss完全相同的事情--SSH

因此破坏了精心准备的用户配置。我很可能想要ffs的确如此。但是请看@wisbucky的答案。
fork0年

2

要显示当前文件的dos行结尾:

:e +ff=unix

这将强制文件格式化为unix,它将呈现CR^M


要使此设置成为永久设置,请添加到~/.vimrc

set ffs=unix

请注意,.vimrc设置ffs不是ff


:e ++ff=unix我相信这应该是。
fork0年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.