:help NL-used-for-Nul

技术细节:

文件中的<Nul>字符在内存中存储为<NL>。在显示屏上 它们被显示为“^@”。翻译是在阅读和写作时完成的 文件。要将<Nul>与搜索模式匹配,只需输入CTRL @或 “ctrl - v 000”。这可能正是你所期望的。在内部的 字符在搜索模式中被替换为<NL>。不同寻常的是 输入ctrl - v CTRL-J也会插入<NL>,因此也会搜索<Nul> 在文件中。{Vi根本无法处理文件中的<Nul>字符}

. {Vi无法处理文件中的<Nul>字符

关于模式的Vim文档:

\r匹配<CR>

\n匹配行结束符- 当匹配字符串而不是 缓冲区文本为字面换行符

.字符匹配

来自http://vim.wikia.com/wiki/Search_and_replace:

搜索时

...

\n是换行符,\rCR(回车= Ctrl-M = ^M)

当更换

...

\r是换行符,\n是空字节(0x00)。

另一个方面是\0,传统上是NULL,被采用 s//\0/表示“整个匹配模式”。(顺便说一下,它与&是冗余的,并且比&长)
  • 所以你不能用\0来表示NULL,所以你要用\n
  • 所以你不能用\n来表示\n,所以你用\r
  • 所以你不能用\r来表示\r,但我不知道谁会故意添加这个char。

——☈

首先,打开:h :s,查看文档中关于“Change”的“4.2 Substitute”部分。下面是命令接受的内容:

:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]

注意关于patternstring的描述

关于{pattern}参见|pattern|。< br > {string}可以是字面值字符串,或
的字符串 特殊的;看到|sub-replace-special|。< / p >

现在你知道搜索模式和替换模式遵循不同的规则。 如果你跟随|pattern|的链接,它会把你带到解释Vim中使用的整个regexp模式的部分

同时,|sub-replace-special|带你到“4.2 Substitute”小节,其中包含替换模式,其中\r用于换行/分隔。

(这部分手册的快捷方式是:h :s%)