------------------------------------------------------------------------------------------
一、简介
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 #避免启动编辑器代码自动折叠