我有一个包含以下内容的文本文件:
elephant
rhino
giraffe
/* animals who live in Africa */
我想#
在每只动物的末尾添加角色。我可以用:%s/\n\n/#\r\r/g
vim 来做到这一点。然而,一开始我尝试过:%s/\n\n/#\n\n/g
,结果是:
elephant#^@^@rhino#^@^@giraffe#^@^@/* animals who live in Africa */
为什么 vim 会有这样的行为?\n
在vim中怎么理解?
答案1
在 vim 替换的替换方面,换行符由 表示\r
。因此,尝试:
%s/\n\n/#\r\r/g
生成的文件将如下所示:
elephant#
rhino#
giraffe#
/* animals who live in Africa */
在替代命令的前半部分,\n
是换行符和\r
回车符。相比之下,在命令的替换侧,\n
是一个 NUL 字符(十六进制 00)并且\r
是一个换行符。