问题
I have found the following in my quest to perform a substitution on even numbered lines only:
:g/^/if !(line('.')%2)|s/foo/bar/g|endif
Works great. But can someone please explain the need for the | characters in the command section of the :g call?
回答1:
The |
character is the command separator; with it, you can concatenate multiple Ex commands in a single line, without adding newlines. See :help :bar.
So, your conditional is equivalent to the following:
if !(line('.')%2)
s/foo/bar/g
endif
Note that some Ex commands consume the entire remainder of the command-line and therefore cannot be directly concatenated with |
. But you can wrap those commands in :execute "{cmd}"
.
来源:https://stackoverflow.com/questions/23679200/vim-performing-substitution-on-certain-lines-only