即使文件模式明确是DOS,gVim也会显示回车符(^ M)

Jer*_*rph 77 vim line-endings carriage-return

我在Windows上使用gVim.我的代码^M在行尾显示字符.我:set ff=dos以前没有用.^M现有行的字符仍然存在,但不会显示我输入的换行符.我已将模式切换为mac(显示^J字符)和unix(也显示^M字符)并返回dos.有没有人见过这个?

ric*_*chq 139

当你有Windows行结尾和Unix行的结尾时会发生这种情况.如果您有100行,其中99是\ r \n,其中一行是\n,您将看到99 ^ M个字符.修复是找到一行并替换它.或者在文件上运行dos2unix.您可以使用以下命令替换Windows行结尾:

:%s/\r\(\n\)/\1/g

  • 我通常只用':%s/^ M //'敲打它们 (3认同)
  • 我希望我能为你+1000 (2认同)

bec*_*lmw 42

你也可以运行:

:e ++ff=dos
Run Code Online (Sandbox Code Playgroud)

要删除^M:请参阅文件格式 - Vim Tips Wiki.

  • 这就是我所寻找的,也是真正正确的答案.谢谢. (4认同)

Eva*_*van 19

我通常使用以下内容来清理我的行结尾:

:g/^M$/s///
Run Code Online (Sandbox Code Playgroud)

为了获得ctrl-M,我通常输入ctrl-Q,然后ctrl-M并将它放入.(在某些环境中它可能是ctrl-V然后ctrl-M.)我不知道为什么,但我发现比rq更容易记住.

不要忘记这样做:set ff=dos,否则你最终还是会保存UNIX行结尾.


小智 15

我知道这已经得到了解答,但我使用的技巧是

:%s/\r/\r/g
Run Code Online (Sandbox Code Playgroud)

这将使用Windows CRLF替换unix回车.只是添加以防其他人有问题.


Iva*_*anM 6

你可以忽略这些字符!

把它放到你的vimrc中

匹配Ignore /\r $//