我知道如何在我的文件中移除^M
(%s/^M//g
),但这只是我要用输入替换^M
的一行...输入是什么VIM中的字符(用于commnad-line模式)。
答案 0 :(得分:50)
要用换行符替换回车符(即<C-m>
)(这是unix换行符),你应该运行一个奇怪的命令:
%s/\r/\r/g
看起来好像什么都不做,但是在正则表达式和双引号字符串中,回车符使用\r
和换行符\n
表示,而在s命令的替换部分中和substitute()函数意味着相反。
请注意,在终端Enter中生成<C-m>
,因此您的初始请求无效。
答案 1 :(得分:33)
:%s/\r//g
仅适用于:
set ff=unix
,完成后会自动将所有CRLF
转换为LF
set ff=dos
和 CR
是一个流氓字符,不以LF开头,例如插入{{1} }。
LF CR对中的CR
因此,如果您只想将每个C-V C-M
转换为LF CR
,则应使用:
LF
答案 2 :(得分:14)
您可以在正常模式下使用r<CR>
替换一个字符
或者,您可以通过键入<C-v><CR>
在命令行模式下输入“return”。
答案 3 :(得分:10)
在vim会话中尝试:
:%s/^M//g
^M
通过ctrl+V+M
点击同时实现{。}}。
答案 4 :(得分:8)
与@ ZyX和@anubhava类似,但假设您只是尝试从Windows文件中删除讨厌的回车符,以下内容就足够了:
:%s/\r//g
答案 5 :(得分:1)
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)