Vim在每一行结束时显示^M。

我如何用在Vim中打开的文件中的普通换行符替换它?


当前回答

命令

:%s/<Ctrl-V><Ctrl-M>/\r/g

其中<Ctrl-V><Ctrl-M>表示输入Ctrl+V然后Ctrl+M。

解释

:%s

替换,% =所有行

<Ctrl-V><Ctrl-M>

^M个字符(Ctrl- v是一种Vim方式来书写Ctrl ^字符,Ctrl-M将M写在正则表达式之后,结果是^M个特殊字符)

/\r/

带新线(\r)

g

并且全局执行(而不仅仅是行上的第一个事件)。

其他回答

在串行控制台上,所有的vi和sed解决方案都不适合我。我不得不:

cat inputfilename | tr -d '\r' > outputfilename

使用以下命令之一:

:%s/\r//g

Or

:%s/\r\(\n\)/\1/g

这招对我很管用:

设置文件格式为unix (\n行结束) 保存文件

在vim中:

:set ff=unix
:w

在vim中,使用命令:

: % s / \ r \ n \ r / g

想要搜索和替换的地方:

\ r \ n

into

\r

/g

是全球性的

注意,这与@ContextSwitch的答案相同,但带有全局标志

在vim中,查看文件格式- DOS或Unix:

:设置文件类型= unix

:设置文件格式=Unix

文件将被写回,没有回车符(CR, ^M)。