美文网首页
Vim技能修炼教程(11) - 代码折叠

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

作者: Jtag特工 | 来源:发表于2017-07-13 12:32 被阅读127次

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

代码折叠

折叠的类型

折叠有下面几种类型:

  • 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的基础,这一部分后面我们再补课。

相关文章

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

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

  • Vim技能修炼教程(10) - 代码跳转

    程序员功能 前面我们用了5讲的篇幅来讲基本编辑的基本功:第4讲是基本操作,第5讲是操作符,第6讲行编辑ex命令,第...

  • Vim 代码折叠

    Vim 可以使用缩进指导折叠: 常用的打开和关闭折叠的快捷键有: zo 打开一个折叠。 zc 关闭一个折叠。 za...

  • Vim技能修炼教程(13) - 变量

    VimScript变量 上节我们介绍了Python和Ruby来编写Vim插件的方式。不过,Python和Ruby并...

  • VIM使用技巧

    ★在vim的命令模式 按Shift+F5,可进入帮助文档。 ★展开折叠 展开、折叠所有代码 z + i 折叠代码 ...

  • Vim技能修炼教程(17) - 编译自己的Vim

    编译自己的Vim 前面我们已经对Vim有比较丰富的了解了。我们也知道Vim有很多编译时的选项,很多功能依赖于这些编...

  • Vim技能修炼教程(7) - 可视模式

    可视模式 可视模式是与正常模式、插入模式一起并列的模式。它的作用就像图形化编辑器下用鼠标来选择一个块。 在vim下...

  • Vim技能修炼教程(8) - 多窗口

    多窗口 如果一个vim只能开一个窗口,那肯定是有点low。尤其是写代码的时候,打开多个文件是经常的需求。 速成教程...

  • Vim 折叠

    作为编辑器之神,Vim 怎么可能没有代码折叠功能呢?但是 Vim 的上手难度极高,想要有顺手的折叠功能可不是一件易...

  • Vim技能修炼教程(3) - 语法高亮进阶

    语法高亮进阶 首先我们复习一下上节学到的三个命令: syntax match用于定义正则表达式和规则的对应 hig...

网友评论

      本文标题:Vim技能修炼教程(11) - 代码折叠

      本文链接:https://www.haomeiwen.com/subject/qkjwhxtx.html