题
从问题 如何更换一个角色对于一个新行在Vim?.你必须使用 当替代案文有一个空行,就像这样
:%s/%/\r/g
但是,当替换端的线和内容的行为的性格,你可以这样做,如:
:%s/\n/%/g
什么节的手册文件,这些行为,什么理由?
解决方案
从 vim文档模式:
\r
比赛 <CR>
\n
比赛结束线 当匹配在一串而不是的 缓冲文本的文字newline 字是匹配的。
其他提示
从 http://vim.wikia.com/wiki/Search_and_replace :
当搜索
...
\n
是newline,\r
是CR
(carriage return=Ctrl-M
=^M
)当替换
...
\r
是newline,\n
是null byte(0x00
).
另一方面是 \0
, ,这是传统上空,是采取在
s//\0/
意思是"整个匹配的模式"。(其中,顺便说一句是多余的,并再比 &
).
- 所以你不能使用
\0
意思NULL
, 所以你使用\n
- 所以你不能使用
\n
意思\n
, 所以你使用\r
. - 所以你不能使用
\r
意思\r
, 但是我不知道谁会想加入那char上的目的。
—☈
:help NL-used-for-Nul
技术细节:
<Nul>
人物在文件存储为<NL>
在存储器。在显示 他们都显示为"^@
".翻译完成当的阅读和写作 文件。匹配<Nul>
有一个搜索图案你就可以进入 CTRL-@ 或 "CTRL-V 000".这可能只是你的期望。内部 字被替换为<NL>
在搜索模式。什么是不寻常的是 那个打字 CTRL-V CTRL-J 还插入一个<NL>
, ,因此也搜索<Nul>
在该文件。{Vi不能处理<Nul>
人物在文件在所有}
首先,打开 :h :s
看到"部分4.2替代"文件"改变"。这里是什么样的命令接受:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
注意到该说明中关于 pattern
和 string
的
{pattern}
看看|pattern|
.
{string}
可以是文字串,或者东西
特别咨商地位;看看|sub-replace-special|
.
所以现在你知道搜索模式和替代模式遵循不同的规则。如果你按照链接到 |pattern|
, 它需要你的部分,说明整个regexp使用的模式在Vim。
与此同时, |sub-replace-special|
把你的小节的"4.2替代",其中包含的模式取代,其中之一是 \r
线路断/分裂。
(快捷方式对这一部分的手册 :h :s%
)