V M字符在Vim中的含义是什么?

我一直在我的vimrc中获得^M字符,并且破坏了我的configuration。

Unix使用0xA换行符。 Windows使用两个字符的组合:0xD 0xA。 0xD是回车符。 ^M正好是vim显示0xD的方式(0x0D = 13,M是英文字母中的第13个字母)。

您可以通过运行以下命令来删除所有^M字符:

 :%s/^M//g 

通过按住Ctrl键并inputv后跟m来input^M ,然后释放Ctrl 。 有时缩写为^V^M ,但请注意,您必须按前面的描述input它,而不是按字面input。

这个expression式将用空stringreplace所有出现的^M (即没有)。 我用它来摆脱从Windows复制到Unix(Solaris,Linux,OSX)的文件中的^M

 :%s/\r//g 

为我今天工作。 但是我的情况可能稍有不同。

翻译新的一行而不是删除它:

 :%s/\r/\r/g 

这可能意味着你有回车(不同的操作系统使用不同的方式来表示行结束)。

使用dos2unix来修复文件或在vim中设置文件格式:

 set ffs=unix,dos 

假设你的文本文件是 – file.txt,然后运行这个命令 –

 dos2unix file.txt 

它将文本文件从dos转换为unix格式。

在Unix中,使用'tr'命令可能更容易。

 cat file1.txt | tr "\r" "\n" > file2.txt 

你可以在vim中使用

 :1,$s/^V^M//g 

^是控制字符。

我通过Mac用户获得了最初在Windows计算机上生成的文本文件,并且需要使用load data命令将其导入到Linux MySQL DB中。

虽然VIM显示了'^ M'字符,但是上述方法都不能解决我的问题,数据会导入,但是总是以某种方式损坏。 最后的解决scheme很容易(经过很多挫折之后)。

解决scheme:在同一个文件上执行dos2unix TWICE的窍门! 使用file命令可以显示一路上正在发生的事情。

 $ file 'file.txt' file.txt: ASCII text, with CRLF, CR line terminators $ dos2unix 'file.txt' dos2unix: converting file file.txt to UNIX format ... $ file 'file.txt' file.txt: ASCII text, with CRLF line terminators $ dos2unix 'file.txt' dos2unix: converting file file.txt to UNIX format ... $ file 'file.txt' file.txt: ASCII text 

最终版本的文件完全导入到数据库中。

我用sed删除了它们:

sed -i -e 's/\r//g'

也可以用不同的string或字符replace:

sed -i -e 's/\r/<string>/g'

如果它破坏了你的configuration,并且在映射中需要^ M字符,你可以简单地用<Enter>甚至是<Cm>replace^ M个字符(这两个字符都是简单的字符序列,分别是7和5个字符)。

这是在映射中存储特殊键码的唯一推荐的便携式方式

在FreeBSD中,您可以通过input以下命令手动清除^M

:%s/ Ctrl + V ,然后按Ctrl + M ,然后再按Ctrl + M。

我发现,由于我的Homebrew Mvim实例被设置为使用filetype = dos,所以我一直在污染文件数周。 在.vimrc中进行所需的更改….

尝试:%s/\^M//至less这对我有效。