Vim 将回车^M替换为回车

Vim 将回车^M替换为回车,vim,Vim,我知道如何删除文件中的^M(%s/^M//g),但这只是我想用enter替换^M的一行。。。VIM中的输入字符是什么(在命令行模式下使用)。您可以在正常模式下使用r替换一个字符。 或者,您可以在命令行模式下输入“return”,方法是在vim会话中键入,然后重试: :%s/^M//g 其中,^M是通过同时按下ctrl+V+M键来实现的。要将回车符(即)替换为换行符(即unix换行符),您应该运行一个有点奇怪的命令: %s/\r/\r/g 看起来好像它什么也不做,但在正则表达式和双引号字符串中

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

您可以在正常模式下使用
r
替换一个字符。
或者,您可以在命令行模式下输入“return”,方法是在vim会话中键入
,然后重试:

:%s/^M//g

其中,
^M
是通过同时按下
ctrl+V+M
键来实现的。

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

%s/\r/\r/g
看起来好像它什么也不做,但在正则表达式和双引号字符串中,回车用
\r
表示,换行符用
\n
表示,而在:s命令和substitute()函数的替换部分,它们的意思正好相反


请注意,在terminal Enter中,会产生
,因此您的初始请求无效。

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

:%s/\r//g

:%s/\r//g
仅在以下情况下有效:

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

  • set ff=dos
    CR
    是不带LF的rogue字符,例如,插入时带有
    C-V C-M

    将找不到LF CR对中的CR

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

:set ff=unix
:w
LF:换行

CRLF:回车和换行

^M:vim将回车部分解释为什么。您还可以使用搜索工具搜索它\r\n

对于我的例子,我不想用任何其他格式的换行符(LF或etc)来代替它,而只是句号和空格()。因为本来应该是一个新的句子,但不知怎么的,它牵涉到了。可能是用户输入错误

帮助我的是:

:%s/^M\n/\. 

(最后有一个空格)

这两种方法对我都很管用\r\n更容易键入

Ctrl+M,Ctrl+V以插入^M


(CentOS Linux 7.2)

从技术上讲,这是两次单独的按键。
之后的任何内容都将按字面意思插入。谢谢,但我知道如何做,因为一个奇怪的原因,这个文件只包含
^M
之后没有返回,所以我必须执行
:%s/^M/^M/g
,其中最后一个
^M
是实际返回值。一般的“替换为换行”问题可以在以下位置找到:但由于
set ff
的原因,查找回车有点特殊,而且这是谷歌的第一次点击,也许我们应该将其分开;当搜索并替换为vim时,我阅读以更好地理解
\n
\r
如果您在vim脚本中运行此脚本,则它是
exec“%s/\r/\r/g”
I'll be there. We can talk.
:%s/^M\n/\. 
:%s/\r\n/\.