我一直在。vimrc中得到^M字符,它破坏了我的 配置。
当前回答
在FreeBSD中,您可以通过输入以下命令手动清除^M:
%s/按Ctrl+V,然后按Ctrl+M,再按Ctrl+M。
其他回答
:%s/\r//g
今天为我工作了。但我的情况可能略有不同。
在FreeBSD中,您可以通过输入以下命令手动清除^M:
%s/按Ctrl+V,然后按Ctrl+M,再按Ctrl+M。
如果它破坏了您的配置,并且映射中需要^M字符,您可以简单地将^M字符替换为<Enter>或甚至<C-m>(两者都输入为简单字符序列,因此分别为7和5个字符)。
这是在映射中存储特殊键码的唯一推荐的可移植方法
我得到了一个文本文件最初是通过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
最终版本的文件被完美地导入数据库。
Unix使用0xA作为换行符。Windows使用两个字符的组合:0xD 0xA。0xD是回车符。^M恰好是vim显示0xD的方式(0x0D = 13, M是英语字母表中的第13个字母)。
您可以通过运行以下命令删除所有^M字符:
:%s/^M//g
其中^M是通过按住Ctrl并输入v + M,然后释放Ctrl来输入的。有时缩写为^V^M,但请注意,您必须按照上一句中描述的方式输入,而不是逐字输入。
这个表达式将把所有出现的^M替换为空字符串(即无)。我用这个来去掉从Windows复制到Unix (Solaris, Linux, OSX)的文件中的^M。