如何理解vim中的\n

Mar*_*tin 3 vim

我有一个包含以下内容的文本文件:

elephant

rhino

giraffe

/* animals who live in Africa */
Run Code Online (Sandbox Code Playgroud)

我想#在每个动物的末尾添加字符。我可以:%s/\n\n/#\r\r/g在 vim 中做到这一点。但是,起初我尝试过,:%s/\n\n/#\n\n/g结果是:

elephant#^@^@rhino#^@^@giraffe#^@^@/* animals who live in Africa */
Run Code Online (Sandbox Code Playgroud)

为什么 vim 会这样?\n在vim中如何理解?

Joh*_*024 6

在 vim 替换的替换端,换行符由 表示\r。因此,尝试:

%s/\n\n/#\r\r/g
Run Code Online (Sandbox Code Playgroud)

生成的文件将如下所示:

elephant#

rhino# 

giraffe#

/* animals who live in Africa */
Run Code Online (Sandbox Code Playgroud)

在替换命令的前半部分,\n是换行符和\r回车符。相比之下,在命令的替换端,\n是一个 NUL 字符(十六进制 00)并且\r是一个换行符。