我有一个包含以下内容的文本文件:
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中如何理解?
在 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是一个换行符。