我想使用以下全局命令根据它们的首字母对文本中的段落进行排序:
g/_p/,/^$/mo$
这单独工作。但是当我一次使用多个全局命令时,就会出现错误:
g/_p/,/^$/mo$|g/_w/,/^$/mo$
这给出了以下错误:
Cannot do :global recursive
如何一次按顺序运行这些命令?
:exe 'g/_p/,/^$/mo$' | g/_w/,/^$/mo$
要附加更多global
命令,只需将它们包装在execute
:
:execute 'g/aaa/s//bbb/g ' | execute 'g/ccc/s/ddd//g' | execute 'g/eee/s/fff/ggg/g' | g/^cake/s/$/ is a lie/g
错误的原因在于:help
:bar
:
*:bar* *:\bar*
|
可用于分隔命令,因此您可以在一行中给出多个命令。如果要|
在参数中使用,请在其前面加上\
.这些命令将
|
视为它们的参数,因此不能跟随另一个 Vim 命令:
- (.. 命令列表..)
:global
- (.. 命令列表..)
请注意,这是令人困惑的(继承自 Vi):命令中包含的是,而
:g
不是。|
:s
为了能够使用另一个命令,请使用该
:execute
命令。
这也解释了为什么下面的链可以正常工作:
%s/htm/html/c | %s/JPEG/jpg/c | %s/GIF/gif/c