我知道如何在文件中删除^M
(%s/^M//g
),但我希望将这一行中的^M
替换为回车符... 在VIM中,回车符是什么字符(以在命令行模式下使用)。
我知道如何在文件中删除^M
(%s/^M//g
),但这次我只想用回车符来替换一个字符,该怎么办?在VIM中,回车符是什么字符(以在命令行模式下使用)。
我知道如何在文件中删除^M
(%s/^M//g
),但我希望将这一行中的^M
替换为回车符... 在VIM中,回车符是什么字符(以在命令行模式下使用)。
我知道如何在文件中删除^M
(%s/^M//g
),但这次我只想用回车符来替换一个字符,该怎么办?在VIM中,回车符是什么字符(以在命令行模式下使用)。
为了将回车符(即 <C-m>
)替换为换行符(即Unix换行符),你需要运行一个有些奇怪的命令:
%s/\r/\r/g
看起来好像什么也没做,但在正则表达式和双引号字符串中,回车符用\r
表示,换行符用\n
表示,而在:s命令的替换部分和substitute()函数中,则相反。
请注意,在终端中,Enter键会产生<C-m>
,因此您最初的请求无效。
exec“%s / \ r / \ r / g”
。 - phyatt:%s/\r//g
只适用于以下情况:
set ff=unix
,当执行此操作时,自动将所有的 CRLF
转换为 LF
set ff=dos
且 CR
是“流氓字符”,前面没有 LF,例如使用 C-V C-M
插入。
LF CR 成对出现的 CR 不会被找到。
因此,如果您只想将每个 LF CR
转换为 LF
,则应使用:
:set ff=unix
:w
在正常模式下,您可以使用r<CR>
替换一个字符。
或者您可以通过键入<C-v><CR>
在命令行模式下输入"返回"。
:%s/^M//g
通过同时按下ctrl+V+M
键可实现^M
。
<C-v>
之后输入的任何内容都会被字面插入。 - mike3996^M
而没有回车,所以我不得不执行 :%s/^M/^M/g
,其中最后一个 ^M
是实际的回车。 - igorgue与@ZyX和@anubhava类似,但是假设您只是尝试从Windows文件中删除烦人的回车符,那么以下方法就足够了:
:%s/\r//g
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)
set ff
,而且这是第一个谷歌搜索结果,也许我们应该将其单独处理。 - Ciro Santilli OurBigBook.com