gVim显示回车(^ M),即使在文件模式是明确的DOS
我在Windows上使用gVim。 我的代码在行尾显示^M字符。 我用:set ff=dos无济于事。  ^M字符保留现有的行,但不显示我input的换行符。 我已经将模式切换到mac(显示^J字符)和unix(还显示^M字符)并返回到dos。 有没有人看过这个? 
当你有Windows行结尾和Unix结尾时,会发生这种情况。 如果您有100行,则99个是\ r \ n,另一个是\ n,您将看到99 ^ M个字符。 解决办法是find一条线并将其replace。 或者在文件上运行dos2unix。 您可以将Windows行结尾replace为:
 :%s/\r\(\n\)/\1/g 
你也可以运行:
 :e ++ff=dos 
 要删除^M :请参阅文件格式 –  Vim Tips Wiki 。 
我通常使用以下来清理我的行尾:
 :g/^M$/s/// 
为了得到ctrl-M,我通常inputctrl-Q,然后按ctrl-M就可以了。(在某些环境下,它可能是ctrl-V,然后是ctrl-M)。我不知道为什么,但是我发现比rq更容易记住。
 不要忘了:set ff=dos ,否则最终还是会保留UNIX行尾。 
我知道这已经被回答了,但我使用的一个技巧是
 :%s/\r/\r/g 
这将用Windows CRLFreplaceunix回车。 只是添加以防其他人有问题。
你可以忽略这些字符!
把这个放到你的vimrc中
匹配忽略/ \ r $ /
其实对我来说(在64位窗口,gVIM:7.2)是:
 :set ffs=dos 
不只是:ff
在Windows 7上运行Vim 7.3我使用了下面的命令:
 :%s/^M/\r/g 
按CTRL + Q创build^ MItypes,然后CTRL + M。
对于你们许多人来说,这可能有点简单,但有可能是有用的。
基于richq的回答,我发现这些在我的vimrc中很有用。 注意,第二个是正常的注释,因为它使dd有点混乱,因为Vim将等待另一个关键笔划,如果它是映射的ex命令。
function!  D2U()
    执行'%s / \ r \(\ n \)/ \ 1 / g'
 endfunction这样
 “map d2u:%s / \ r \(\ n \)/ \ 1 / g
 第一种是通过在ex中inputcall D2u()来运行,第二种是在编辑模式下按D2u来运行。 
这些额外的CR行结束通常是因为在混合的UNIX / DOS系统上使用文件。
可能最短的答案是从每行的末尾删除单个^ M,我使用的是:
 :%s/\r 
相当于:
 :%s/\r// 
但不需要结束斜杠(假设)。
尝试了很多东西,但以下工作
 :%s/\r/\r/g 
注意:如果你想要整个文件的效果,请使用g