Regex 如何在GVim正则表达式的替换中放置换行符
我在Windows7上使用GVim 我想学习如何使用正则表达式替换来放置换行符。为此,我尝试使用\r和\n元字符,但替换的文本不显示正常的换行符 例如,一开始我有: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^@^
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”。它是否在以前的版本上进行过测试?有关搜索与替换中元字符用法差异的更多信息,请参阅。