Regex 如何在GVim正则表达式的替换中放置换行符

Regex 如何在GVim正则表达式的替换中放置换行符,regex,vim,newline,substitution,Regex,Vim,Newline,Substitution,我在Windows7上使用GVim 我想学习如何使用正则表达式替换来放置换行符。为此,我尝试使用\r和\n元字符,但替换的文本不显示正常的换行符 例如,一开始我有: line 1 line 2 我使用以下替换表达式: :%s/\n/\n\n/g 然后GVim生成以下文本: line 1^@^@line 2^@^@ line 1 ^@line 2 ^@ 相反,如果在替换表达式中使用\r\n :%s/\n/\r\n/g 然后GVim生成以下文本: line 1^@^@line 2^@^

我在Windows7上使用GVim

我想学习如何使用正则表达式替换来放置换行符。为此,我尝试使用\r和\n元字符,但替换的文本不显示正常的换行符

例如,一开始我有:

line 1
line 2

我使用以下替换表达式:

:%s/\n/\n\n/g
然后GVim生成以下文本:

line 1^@^@line 2^@^@
line 1
^@line 2
^@

相反,如果在替换表达式中使用\r\n

:%s/\n/\r\n/g
然后GVim生成以下文本:

line 1^@^@line 2^@^@
line 1
^@line 2
^@

那些^@字符是什么

如何在替换表达式中正确使用换行符?

^@是一个nul
出于某种原因,vim希望在替换文本中看到
\r
,以便插入换行符。(
\n
在替换中插入nul。)

因此,在通过运行
/\n
成功定位换行符后,请尝试:

s//\r/
或添加额外的换行符:

s/$/\r/
在模式方面,
\r
表示一个实际的(015)CR字符,当您想用换行符替换返回值时,会产生以下奇怪的命令:

s/\r/\r/
不,这不是禁止。这是

s/\r/\r/
失败了。 但是


工作正常。

在Windows 7上的我的Vim 7.3中,建议的
s/\r/\r/
给出错误“E486:找不到模式:\r”。它是否在以前的版本上进行过测试?有关搜索与替换中元字符用法差异的更多信息,请参阅。