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