vi中如何去掉回车符

CJ *_*nis 4 vi

我有一个文件由于末尾的单个回车符 (0x0D) 而失败。它最初是一个回车/换行组合(0x0D,0x0A)。我试过了:

  • 在 INSERT 模式下删除它(删除最后一个打印字符并保留回车符)
  • %s/\r//( E486: Pattern not found: \r)
  • %s/^M//(Ctrl+V, Ctrl+M 得到^M) ( E486: Pattern not found: ^M)
  • J 加入下一行(似乎对最后一行没有任何作用)

所有这些都保留回车符。

我怎样才能从内部vi(不是vim)摆脱这个角色?

编辑

现在看来,每当我保存文件时,它都会添加一个新行字符(0x0A)。所以,0x0D 消失了,但我的文件末尾仍然有一个无效字符。

我尝试添加两个空行以查看它是否会添加 0x0A 或 0x0D、0x0A(我使用的是 Windows 中的 PuTTY)并添加了两个 0x0A 字符,总共三个。

如果你有三行,你不应该只需要两个行分隔符吗?

  • %s/\n// (没有错误,但不会删除字符)

CJ *_*nis 8

我终于在别处找到了答案:

:set noendofline binary

保存文件时删除最后的新行。