我一直在。vimrc中得到^M字符,它破坏了我的 配置。
当前回答
我用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
最终版本的文件被完美地导入数据库。
这可能意味着您得到了回车(不同的操作系统使用不同的方式来表示行结束)。
使用dos2unix在vim中修复文件或设置文件格式:
set ffs=unix,dos
如果它破坏了您的配置,并且映射中需要^M字符,您可以简单地将^M字符替换为<Enter>或甚至<C-m>(两者都输入为简单字符序列,因此分别为7和5个字符)。
这是在映射中存储特殊键码的唯一推荐的可移植方法
在Unix中,使用'tr'命令可能更容易。
cat file1.txt | tr "\r" "\n" > file2.txt
这是唯一对我有效的方法:
: ff + + =
:wq