我一直在。vimrc中得到^M字符,它破坏了我的 配置。
当前回答
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。
其他回答
%s/\^M//至少这对我有用。
如果您没有故意指定不同的文件格式(例如,对于Windows文件,:e++ ff=unix),很可能目标文件的eol是混合的。
例如,如果一个文件有一些行以<CR><NL>结尾,而其他行以 <NL>结尾,文件格式被Vim读取时自动设置为unix, ^M (<CR>)将出现。 在这种情况下,文件格式(注意:有一个额外的s)发挥作用。详情见:help ffs。
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。
如果它破坏了您的配置,并且映射中需要^M字符,您可以简单地将^M字符替换为<Enter>或甚至<C-m>(两者都输入为简单字符序列,因此分别为7和5个字符)。
这是在映射中存储特殊键码的唯一推荐的可移植方法
:%s/\r//g
今天为我工作了。但我的情况可能略有不同。
推荐文章
- 同一行上有多个命令
- 如何将所有文本转换为小写在Vim
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 使用sh shell比较字符串
- Visual Studio代码-在文件末尾插入换行符
- 使用vimdiff查看所有' git diff '
- 只列出UNIX中的目录
- 禁止在vim中创建交换文件
- NERDTree重载新文件
- 如何限制从grep返回的结果的数量?
- 如何管道列表的文件返回的找到命令到猫查看所有文件
- 以相对于当前目录的路径递归地在Linux CLI中列出文件
- 如何使用xargs复制名称中有空格和引号的文件?
- 在makefile中抑制命令调用的回声?