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这对我有效。