我一直在。vimrc中得到^M字符,它破坏了我的 配置。


当前回答

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

dos2unix file.txt 

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

其他回答

我用sed删除了它们:

Sed -i -e 's/\r//g' <filename>

也可以替换为不同的字符串或字符。例如,如果没有换行符,你可以把\r变成\n:

Sed -i -e 's/\r/\n/g' <filename>

这些sed命令适用于GNU/Linux版本的sed,但在bsd(包括macOS)上可能需要调整。

我得到了一个文本文件最初是通过Mac用户在Windows机器上生成的,需要使用load data命令将它导入到Linux MySQL DB中。

尽管VIM显示了'^M'字符,但上述方法对我的特定问题都不起作用,数据会导入,但总是以某种方式损坏。在经历了很多挫折之后,最终解决方案非常简单。

解决方案: 在同一个文件上执行dos2unix两次就成功了!使用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

最终版本的文件被完美地导入数据库。

%s/\^M//至少这对我有用。

翻译新行而不是删除它:

:%s/\r/\r/g

我发现,由于我的Homebrew Mvim实例被设置为使用filetype=dos,我已经污染了几个星期的文件。在.vimrc....中进行了所需的更改