将回车 ^M 替换为 Enter

发布于 2024-11-06 03:40:30 字数 138 浏览 0 评论 0原文

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

I know how to remove ^M in my files (%s/^M//g), but this one is just one line I'd like to replace ^M with enter... what's the enter character in VIM (to use in commnad-line mode).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

初与友歌 2024-11-13 03:40:30

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

%s/\r/\r/g

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

请注意,在终端中 Enter 会生成 ,因此您的初始请求无效。

To replace carriage return character (which is <C-m>) with line feed character (which is unix line break character) you should run a bit strange command:

%s/\r/\r/g

It looks like if it is doing nothing, but in regular expressions and double-quoted strings carriage returns are represented using \r and line feeds with \n, while in the replacement part of :s command and substitute() function they mean the opposite.

Note that in terminal Enter produces <C-m>, so your initial request is not valid.

今天小雨转甜 2024-11-13 03:40:30

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

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

  • < p>set ff=dos CR 是一个流氓字符,前面没有 LF,例如,插入与CV CM

    LF CR 对中的 CR 找不到

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

:set ff=unix
:w

:%s/\r//g only works when:

  • set ff=unix, which when done, automatically converts all CRLF to LF

  • set ff=dos and CR is a rogue char that is not preceded by LF, e.g., inserted with C-V C-M.

    CR in LF CR pairs will not be found.

Therefore, if all you want is to convert every LF CR to LF, you should use:

:set ff=unix
:w
苦行僧 2024-11-13 03:40:30

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

You can replace one character using r<CR> in normal mode.
Or you can enter a "return" in command line mode by typing <C-v><CR>.

浮世清欢 2024-11-13 03:40:30

在 vim 会话中尝试:

:%s/^M//g

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

In vim session try:

:%s/^M//g

Where ^M is achieved by ctrl+V+M keystrokes together.

夜雨飘雪 2024-11-13 03:40:30

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

:%s/\r//g

Similar to @ZyX and @anubhava, but assuming you're simply trying to remove the pesky carriage returns from a windows file, the following will suffice:

:%s/\r//g
孤云独去闲 2024-11-13 03:40:30

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)

LF: Line Feed

CRLF: Carriage Return and Line Feed

^M : What vim interpretes Carriage Return part as. You can also search it with \r

For my case I wanted not to replace it with any other format of line break (LF or etc.) but just period and whitespace (. ). Because what supposed to be was a new sentence but somehow carriage return involved in. Probably user typo.

From

I'll be there^M
We can talk.

To

I'll be there. We can talk.

What helped me is:

:%s/^M\n/\. 

or

:%s/\r\n/\. 

(there's a whitespace in the end)

Both worked fine for me. \r\n easier to type.

Ctrl+M , Ctrl+V to insert ^M

(CentOS Linux 7.2)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文