问题
I intend to fold all the lines ending in { but not classes. So far I have came up with this command :
:%g/.\{-}\(class\)\@!.*{$/normal! zf%
But this would match also the lines containing class.
回答1:
There are several problems:
- From
:help /\@!: "You can't use "\@!" to look for a non-match before the matching position". Use\@<!, include the possible characters in between in there, and drop the useless (because it's not anchored) non-greedy first match. - The
:globalcommand places the cursor on the first column of matching lines, so add a$to make the%work all the time. - Subsequent inner folds must be defined with the outer fold open:
zv.
Ergo:
:%g/\%(class.*\)\@<!{$/normal! $zvzf%
来源:https://stackoverflow.com/questions/20141984/vim-folding-every-line-ending-in-but-not-classes