用Enter替换回车^ M

时间:2011-05-09 15:35:11

标签: vim

我知道如何在我的文件中移除^M%s/^M//g),但这只是我要用输入替换^M的一行...输入是什么VIM中的字符(用于commnad-line模式)。

6 个答案:

答案 0 :(得分:50)

要用换行符替换回车符(即<C-m>)(这是unix换行符),你应该运行一个奇怪的命令:

%s/\r/\r/g

看起来好像什么都不做,但是在正则表达式和双引号字符串中,回车符使用\r和换行符\n表示,而在s命令的替换部分中和substitute()函数意味着相反。

请注意,在终端Enter中生成<C-m>,因此您的初始请求无效。

答案 1 :(得分:33)

:%s/\r//g仅适用于:

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

  • set ff=dos CR是一个流氓字符,以LF开头,例如插入{{1} }。

    LF CR对中的CR

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

LF

答案 2 :(得分:14)

您可以在正常模式下使用r<CR>替换一个字符 或者,您可以通过键入<C-v><CR>在命令行模式下输入“return”。

答案 3 :(得分:10)

在vim会话中尝试:

:%s/^M//g

^M通过ctrl+V+M点击同时实现{。}}。

答案 4 :(得分:8)

与@ ZyX和@anubhava类似,但假设您只是尝试从Windows文件中删除讨厌的回车符,以下内容就足够了:

:%s/\r//g

答案 5 :(得分:1)

LF:换行

CRLF:回车和换行

^M : vim 将回车部分解释为什么。您也可以使用 \r

进行搜索

就我而言,我不想用任何其他格式的换行符(LF 或等)替换它,而只是用句点和空格 (. ) 替换它。因为应该是一个新的句子,但不知何故涉及回车。可能是用户输入错误。

来自

I'll be there^M
We can talk.

I'll be there. We can talk.

帮助我的是:

:%s/^M\n/\. 

:%s/\r\n/\. 

(最后有一个空格)

两者对我来说都很好。 \r\n 更容易打字。

Ctrl+M , Ctrl+V 插入 ^M

(CentOS Linux 7.2)