问题如何在Vim中替换换行符?.替换新行的文本时必须使用\ r,如下所示
:%s/%/\r/g
Run Code Online (Sandbox Code Playgroud)
但是当替换字符的行尾和换行符时,您可以这样做:
:%s/\n/%/g
Run Code Online (Sandbox Code Playgroud)
手册的哪一部分记录了这些行为,以及它们背后的原因是什么?
Lim*_*ent 197
来自http://vim.wikia.com/wiki/Search_and_replace:
搜索时
...
\n是换行符,\r是CR(回车=Ctrl-M=^M)更换时
...
\r是换行符,\n是一个空字节(0x00).
rki*_*ing 107
对此的另一个方面是,\0传统上为NULL,
s//\0/用于表示"整个匹配模式".(顺便说一句,这是多余的,并且比...更长&).
\0用来表示NULL,所以你使用\n\n用来表示\n,所以你使用\r.\r用来表示\r,但我不知道谁会故意添加这个char.-☈
syo*_*kit 10
首先,打开:h :s以查看关于"更改"的文档的"4.2替代"部分.这是命令接受的内容:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
Run Code Online (Sandbox Code Playgroud)
请注意关于pattern和的描述string
为了
{pattern}看|pattern|.
{string}可以是文字字符串,或
特殊的东西; 看|sub-replace-special|.
所以现在你知道搜索模式和替换模式遵循不同的规则.如果您点击链接|pattern|,它将带您进入解释Vim中使用的整个正则表达式模式的部分.
同时,|sub-replace-special|带您进入"4.2替代"的小节,其中包含替换模式,其中包括\r换行/拆分.
(这部分手册的快捷方式是:h :s%)