将回车 ^M 替换为 Enter
我知道如何删除文件中的 ^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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
要用换行符(unix 换行符)替换回车符(
),你应该运行一个有点奇怪的命令:它看起来好像什么也没做,但是在正则表达式和双引号字符串中,回车符使用
\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: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.:%s/\r//g
仅在以下情况下有效:set ff=unix
,完成后会自动转换所有CRLF
到LF
set ff=dos
和CR
是一个流氓字符,前面没有 LF,例如,插入与CV CM
。LF CR 对中的 CR 找不到。
因此,如果您只想将每个
LF CR
转换为LF
,您应该使用::%s/\r//g
only works when:set ff=unix
, which when done, automatically converts allCRLF
toLF
set ff=dos
andCR
is a rogue char that is not preceded by LF, e.g., inserted withC-V C-M
.CR in LF CR pairs will not be found.
Therefore, if all you want is to convert every
LF CR
toLF
, you should use:您可以在正常模式下使用在命令行模式下输入“return”。
r
替换一个字符。或者,您可以通过键入
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>
.在 vim 会话中尝试:
其中
^M
是通过同时ctrl+V+M
按键实现的。In vim session try:
Where
^M
is achieved byctrl+V+M
keystrokes together.与@ZyX和@anubhava类似,但假设您只是想从Windows文件中删除讨厌的回车符,则以下内容就足够了:
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:
LF: 换行
CRLF: 回车和换行
^M : vim 将回车部分解释为什么。您还可以使用 \r 搜索它
对于我的情况,我不想将其替换为任何其他格式的换行符(LF 等),而只是句点和空格(.)。因为本来应该是一个新句子,但不知何故涉及回车。可能是用户拼写错误。
从 到
对
我有帮助的是:
或
(最后有一个空格)
两者对我来说都很好。 \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
To
What helped me is:
or
(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)