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

时间:2011-05-03 19:24:14

标签: regex vim newline substitution

我在Windows 7上使用GVim。

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

例如,一开始我有:

line 1
line 2

Before substitution

我使用以下替换表达式:

:%s/\n/\n\n/g

然后GVim产生以下文字:

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

After substitution with \n as newline characters

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

:%s/\n/\r\n/g

然后GVim产生以下文字:

line 1
^@line 2
^@

After substitution with \r\n as newline

那些^ @字符是什么?

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

2 个答案:

答案 0 :(得分:29)

^ @是nul


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

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

s//\r/

或者添加额外的换行符:

s/$/\r/

在模式方面,\r表示实际的(015)CR字符,当您想用换行符替换返回时,会导致以下奇怪的命令:

s/\r/\r/

不,这不是无操作。

答案 1 :(得分:4)

s/\r/\r/

失败。 但

s/\n/\r/

工作正常。