Vim 中高效折叠代码方法总结

前言

本文章旨在总结自己在利用 Vim 阅读和写代码过程中所用的折叠代码的方法。

vim 折叠设置

vim 自带代码折叠功能。在 vim 中折叠设置:set fdm=xxx(fdm< foldmethod >缩写),可在 .vimrc 文件中定义实现,可永久有效。vim 自带的代码折叠有 manual,indent,marker,diff,syntax,expr等六种模式。

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

模式

(1) manual 模式:set foldmethod=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 foldmethod=indent

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

  1. :set foldlevel=1 #指定级别折叠缩进
  2. :set foldlevelstart=99 #避免启动编辑器代码自动折叠

(3) marker模式:set foldmethod=marker

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

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

总结

以上命令会持续补充,可以说“条条大路通罗马”,为完成一个任务可能不止一种方法,有好的方法可以完成相同的任务也欢迎大家提出宝贵的意见。

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值