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

sss*_*sss 11 linux vi

在 Solaris 上,如果您在 vi 中打开一个带有 Windows 行结尾的文件,这会在每一行的末尾显示为 ^M。

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

是否有设置可以使 Linux vi 在这方面的行为与 Solaris 相同?

对我们来说,一个常见的问题是从 (Windows) 开发箱中复制一个 shell 脚本并忘记使用 dos2unix,然后在它不能正常工作时感到困惑。在 Solaris 上,只要您 vi 文件,问题就很明显,但在 Linux 上则不然。

谢谢。

Gar*_*ett 10

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

vi 会根据是否遇到仅以 LF 结尾或以 CR/LF 结尾的行自动猜测要使用的格式。

  • @gman - 这个命令对我不起作用 - 我得到了`Not an editor command: ffs=unix` - 但让我走上了正确的道路。在 vi 中打开文件的情况下运行 `:set ffs=unix` 不起作用 - 没有错误但什么也没发生。我将 `set ffs=unix` 放在我的 .vimrc 文件中,并且奏效了。 (3认同)
  • @RedGrittyBrick - 在我的系统上,`:set list` 在所有行的末尾显示 `$`(Unix 和 DOS 格式),因此无助于区分两者。 (2认同)