原文: https://www.yupengsir.com/topic/content?i=140
这个作者的vim系列是高级的用法, 要学习一下。
https://blog.easwy.com/archives/advanced-vim-skills-advanced-move-method/
---------------------------------------------------------------------------------------------
一、简介
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 #避免启动编辑器代码自动折叠