用Enter替换回车^ M

igo*_*gue 35 vim

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

ZyX*_*ZyX 54

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

%s/\r/\r/g
Run Code Online (Sandbox Code Playgroud)

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

请注意,在终端输入生成<C-m>,因此您的初始请求无效.

  • 大; 我阅读了[this](http://stackoverflow.com/questions/71417/why-is-ra-newline-for-vim),以便在搜索并替换为vim时更好地理解`\ n`和`\ r`。 (2认同)

Cir*_*四事件 35

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

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

  • set ff=dos 并且 CR是一个不在 LF之前的流氓char ,例如插入C-V C-M.

    不会找到LF CR对中的CR .

因此,如果您想要将每个转换LF CRLF,您应该使用:

:set ff=unix
:w
Run Code Online (Sandbox Code Playgroud)


unp*_*680 14

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


anu*_*ava 10

在vim会话中尝试:

:%s/^M//g
Run Code Online (Sandbox Code Playgroud)

^M被实现ctrl+V+M按键在一起.

  • 从技术上讲,这是两个单独的击键.在`<Cv>`之后的任何内容都将按字面插入. (3认同)

Rob*_*bin 8

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

:%s/\r//g
Run Code Online (Sandbox Code Playgroud)