zl程序教程

您现在的位置是:首页 >  工具

当前栏目

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

Vim教程代码 11 技能 修炼 折叠
2023-09-11 14:19:46 时间

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

折叠的类型

折叠有下面几种类型:

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命令吧,就是下面这个效果:

manual_fold

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

5zF

上面就创建5行的折叠。

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


教程 | Vim 教程【命令-操作-快捷键】 命令历史以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令。 启动vim在命令行窗口中输入以下命令即可 vim 直接启动vim vim filename 打开vim并创建名为filename的文件 文件命令打开单个文件 vim file 同时打开多个文件 vim file1 file2 file3 ... 在vim窗口中打开一个新文件 :open file 在新窗口中打开文件 :split file 切换到下一个文件 切换到上一个文件 查看当前打开的文件列表,当前正在编辑的文件会用[]括起来。
Vim技能修炼教程(15) - 时间和日期相关函数 前面我们走马观花地将Vimscript的大致语法过了一遍。下面我们开始深入看一下Vimscript都给我们准备了哪些武器。如果只用这些武器就够了,那么就太好了,只用Vimscript会导致最佳的兼容性。否则不管是用:python还是使用扩展库,都给可移植性带来麻烦。
lusing 刘子瑛,阿里系统框架专家。工作十余年,一直对新编程语言、新开发方法、数学与算法相关和并发等相关领域保持浓厚的兴趣。乐于通过技术分享促进新技术。