1

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.

muhmuhten
  • 3,313
  • 1
  • 20
  • 26
Patryk
  • 22,602
  • 44
  • 128
  • 244

1 Answers1

2

There are several problems:

  1. 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.
  2. The :global command places the cursor on the first column of matching lines, so add a $ to make the % work all the time.
  3. Subsequent inner folds must be defined with the outer fold open: zv.

Ergo:

:%g/\%(class.*\)\@<!{$/normal! $zvzf%
Ingo Karkat
  • 167,457
  • 16
  • 250
  • 324