------------------------------------------------------------------------------------------

一、简介

vim自带代码折叠功能,会使得我们开发时更简单。在vim中折叠设置:set fdm=xxx(fdm<>foldmethod缩写),可在.vimrc中定义实现永久有效,有manual,indent,marker,diff,syntax,expr等5种模式,此处介绍前三种。

  • manual:手工定义折叠
  • indent:按缩进折叠
  • marker:用标记/*{{{*/ /*}}}*/来定义折叠
  • diff:比较模式,对没有更改的文本进行折叠
  • syntax:用语法高亮来定义折叠
  • expr:用表达式进行折叠

二、使用

1、manual模式:set fdm=manual

说明:此模式下的折叠功能只能依靠人工创建折叠范围区,在此基础上对折叠区进行开启、关闭、删除和移动等操作。

  • zf:创建折叠区
  • vj/vk/vG/vgg选中区域后执行zf
  • zfnj:从当前行开始向下到n行折叠
  • zfnk:从当前行开始向上到n行折叠
  • zfgg:从当前行到第一行折叠
  • zfG:从当前行到最后一行折叠
  • zfngg:从当前行到第n行折叠
  • zfap:按段落折叠
  • zfa(:折叠括号包围的区域(如:()、[]、{}、><等)
  • 开启
  • za:开启/关闭当前折叠区,任何时候有效
  • zi:开启/关闭所有级折叠区,仅对对自己开启的折叠区有效
  • zv/zo:打开当前折叠区
  • zO:打开当前所有级折叠区
  • zr:打开同一级折叠区
  • zR:递归打开所有折叠区
  • 关闭
  • zm:关闭同一级折叠区
  • zM:关闭所有级折叠区
  • zc:关闭当前折叠区
  • zC:关闭选取范围内所有级折叠区
  • zn:禁用折叠
  • zN:启用折叠
  • 删除
  • zd:删除当前折叠区
  • zD:删除当前所有级折叠区
  • zE:删除窗口内所有折叠区
  • 移动
  • zj:向下一个折叠点移动
  • zk:向上一个折叠点移动
  • [z:移动到打开后的折叠区的开始处
  • ]z:移动到打开后的折叠区的结束处
  • 注意
  • vim不会自动记忆手工折叠点需要如下命令进行保存/读取
  • :mkview 进行保存
  • :loadview 进行读取

 

2、indent模式:set fdm=indent

说明:此模式下的折叠功能依据缩进自动进行,zf在此模式中无效,在此基础上对折叠区进行开启、关闭和移动等操作与手动模式的一致。

:set foldlevel=1 #指定级别折叠缩进

:set foldlevelstart=99 #避免启动编辑器代码自动折叠

 

3、marker模式:set fdm=marker

说明:此模式默认按{{{ }}}标志作为缩进依据,zf会自动生成该标志,在此基础上对折叠区进行开启、关闭、删除和移动等操作与手动模式的一致。

:set foldlevelstart=99 #避免启动编辑器代码自动折叠