Vim折叠每行以{但不是类

时间:2013-11-22 10:00:28

标签: regex vim regex-negation folding

我打算折叠以{结尾但不是类的所有行。到目前为止,我已经提出了这个命令:

:%g/.\{-}\(class\)\@!.*{$/normal! zf%

但这也会匹配包含class

的行

1 个答案:

答案 0 :(得分:2)

有几个问题:

  1. 来自:help /\@!:“您无法使用”\ @!“在匹配位置之前查找不匹配”。使用\@<!,在其中包含可能的字符,并删除无用的(因为它没有锚定)非贪婪的第一场比赛。
  2. :global命令将光标放在匹配行的第一列上,因此添加$以使%始终有效。< / LI>
  3. 必须在打开外部折叠时定义后续内部折叠:zv
  4. 埃尔戈:

    :%g/\%(class.*\)\@<!{$/normal! $zvzf%