Vim技能修炼教程(11) - 代码折叠

上一讲我们是程序员篇的第一讲,关于代码跳转。代码跳转是一个付出很少收获很大的功能。这一节我们开始一个收获很多,但是付出也相对多一点功能:代码折叠。

代码折叠

折叠的类型

折叠有下面几种类型:
* Manual: 手动创建折叠。但是退出vim后就一切都没了。
* Marker: 基于特定的字符组合进行折叠。
* Expr: 定义正则表达式来处理折叠,这是最终的解决方案。
* Indent: 这个最简单也最基本,根据缩进来折叠。
* Syntax: 根据程序语义进行折叠。

我们先看一个例子,左边是采用syntax方式进行折叠的,右边是采用indent方式。

fold

从上面的例子可以看到,折叠方式的属性是跟窗口相关的,每个窗口都设置不同的折叠方式。

设置折叠的方式,是通过设置foldmethod属性来实现的,例:

:set foldmethod=indent
:set foldmehtod=syntax

折叠操作命令速成

折叠命令都是以z字开头的,对于中国人最友好了,就是折字的拼音首字母么。

最重要的折叠命令就是za,切换折叠状态。

  • za: 切换折叠状态
  • zA: 递归切换折叠状态
  • zo: 打开一个折叠
  • zc: 关闭一个折叠
  • zj: 移动到下一个折叠
  • zk: 移动到上一个折叠

手动模式

我们可以通过zf命令手动创建折叠。比如上图中,Pseudo code for int 21那一段我们看着不爽,想把它折叠起来。
我们先切折叠模式:

:set foldmethod=manual

然后移动到Pseudo那一行,输入创建命令:

zf4j

zf是创建折叠命令,后面接命令的范围,我们要创建这5行的折叠,所以我们用4j向下移动4行。

最后,在这5行上试试zc命令吧,就是下面这个效果:

手动折叠

我们如果可以数出来有几行的话,可以使用zF命令来创建,例:

5zF

上面就创建5行的折叠。

未尽事宜

vim虽然功能很全,但是不可能支持每一种我们想要的格式。我们还是需要写脚本来实现自己的折叠方式的。不过我们还没有学习vimscript的基础,这一部分后面我们再补课。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jtag特工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值