关于VIM:用Enter替换回车^m


Replacing carriage return ^M with Enter

我知道如何在我的文件中删除^M(%s/^M//g),但这一行只是我想用enter替换^M的一行…vim中的enter字符是什么(在commnad line模式中使用)。


要用换行符(unix换行符)替换回车符(即),应该运行一个有点奇怪的命令:

1
2
3
%s/
/
/g

看起来好像它什么都没做,但是在正则表达式和双引号字符串中,回车是用
表示的,换行是用
表示的,而在:s command and and substitute()函数的替换部分,它们的意思正好相反。

请注意,在Terminal Enter中生成,因此初始请求无效。


:%s/
//g
仅在以下情况下工作:

  • set ff=unix完成后,自动将所有CRLF转换为LF

  • set ff=dosCR是一个无赖字符,前面没有lf,例如插入C-V C-M中。

    在LF CR对中找不到CR。

因此,如果您只想将每个LF CR转换为LF,则应使用:

1
2
:set ff=unix
:w


在正常模式下,可以使用r替换一个字符。或者,您可以通过键入在命令行模式中输入"回车"。


在VIM会话中,尝试:

1
:%s/^M//g

其中,^M是通过ctrl+V+M一起按键来实现的。


类似于@zyx和@anubhava,但假设您只是试图从Windows文件中删除烦人的回车,那么以下内容就足够了:

1
2
:%s/
//g