我在Windows上使用gVim。我的代码末尾显示了^M
字符。我使用:set ff=dos
,但没有用。现有行中的^M
字符仍然存在,但是我输入的新行不会显示出来。我已经切换到mac模式(显示^J
字符)和unix模式(同样显示^M
字符),然后又切换回dos模式。有其他人也遇到这个问题吗?
我在Windows上使用gVim。我的代码末尾显示了^M
字符。我使用:set ff=dos
,但没有用。现有行中的^M
字符仍然存在,但是我输入的新行不会显示出来。我已经切换到mac模式(显示^J
字符)和unix模式(同样显示^M
字符),然后又切换回dos模式。有其他人也遇到这个问题吗?
:%s/\r\(\n\)/\1/g
:set ff=dos
,就像Evan的回答一样。 - Merlyn Morgan-Grahamvim -R -c ":e ++ff=dos" 文件名
。 - undefined我通常使用以下方法清除我的行尾:
:g/^M$/s///
:set ff=dos
,否则你最终保存的文件仍将使用UNIX换行符。我知道这个问题已经有了答案,但是我使用的一个技巧是
:%s/\r/\r/g
这将把Unix换行符替换为Windows换行符CRLF。加上这句话,以防其他人遇到问题。
你可以忽略这些字符!
将以下内容添加到您的vimrc中:
匹配 Ignore /\r$/
实际上,在我这里(64位Windows,gVIM: 7.2),有效的方法是:
:set ffs=dos
not just: ff
:%s/^M/\r/g
这可能对你们中的许多人来说有点简单,但如果有用的话就试试吧。
根据richq的答案,我在我的vimrc中发现了这些有用的内容。请注意,第二个通常被注释掉,因为它使dd有点混乱,由于Vim将等待另一个按键来确定它是否是映射的ex命令。
function! D2u() execute '%s/\r\(\n\)/\1/g' endfunction "map d2u :%s/\r\(\n\)/\1/g
第一个是通过在ex中键入call D2u()
来运行的,第二个是在编辑模式下按D2u
。
尝试了很多方法,但以下方法起作用:
:%s/\r/\r/g
这些是额外的CR行结尾,通常是由于在混合UNIX / DOS系统上使用文件引起的。
可能最简单的方法是从每行末尾删除单个^M,我使用的方法是:
:%s/\r
这与以下代码等效:
:%s/\r//
*https://dev59.com/eXRA5IYBdhLWcg3w0xjk*https://dev59.com/U3VD5IYBdhLWcg3wHnwX - Henke