:exe 'g/_p/,/^$/mo$' | g/_w/,/^$/mo$
To append more global
commands, just keep wrapping them in 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
The reason for the error is in :help
:bar
:
*:bar* *:\bar*
|
can be used to separate commands, so you can give multiple commands in one line. If you want to use |
in an
argument, precede it with \
.
These commands see the |
as their argument, and can therefore not be
followed by another Vim command:
- (.. list of commands ..)
:global
- (.. list of commands ..)
Note that this is confusing (inherited from Vi): With :g
the |
is
included in the command, with :s
it is not.
To be able to use another command anyway, use the :execute
command.
This also answers why the below chain would work without any issues:
%s/htm/html/c | %s/JPEG/jpg/c | %s/GIF/gif/c