原文: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 #避免启动编辑器代码自动折叠

三、参考资料

syntax用法

indent与marker用法

vim折叠设置

【转】vim折叠功能的更多相关文章

  1. vim代码折叠功能

    问题:怎样在vim中实现代码折叠功能? 解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠 小试折叠: 1  :set fdm=marker  在vim中执行该命令 2  5G  将 ...

  2. Vim折叠模式设置

    参考文章:http://www.cnblogs.com/welkinwalker/archive/2011/05/30/2063587.html set foldmethod=indent " ...

  3. vim折叠设置(转载)

    vim折叠设置(转载) set foldmethod=indent "set default foldmethod"zi 打开关闭折叠"zv 查看此行zm 关闭折叠zM ...

  4. vim 折叠代码技巧汇总

    以下命令输入的方式: 如zo命令,先按z键,松开后按o键即可展开折叠. 一.打开.关闭折叠 zo 展开折叠,只展开最外层的折叠. zO 对所在范围内所有嵌套的折叠点展开,包括嵌套折叠. zc 折叠,只 ...

  5. 找回Xcode7的代码折叠功能

    升级到Xcode7后,会发现代码折叠功能不见了,这是怎么回事? 其实这个功能还在的,用以下的快捷键仍然可以折叠代码.只是不能用鼠标实现折叠了:在Xcode菜单里选择Preference——Text E ...

  6. vim添加代码折叠功能

    用空格或者za命名改变,添加如下到vimrc文件 " Enable folding set foldmethod=indent set foldlevel=99 " Enable ...

  7. vim 折叠技巧

    转自:http://www.2cto.com/os/201203/122133.html 主要命令: zf-创建折叠 zf20G--创建折叠,从当前行折叠到第20行 zfgg--创建折叠,从当前位置折 ...

  8. vs2015里给c#添加轮廓折叠功能

    轮廓折叠,在看代码时非常有用的功能,可以暂时屏蔽大段不相关的if/else分支 记得以前老版vs里是自带这功能的,c++和c#都有 但不知为啥最新的2015里c#没有了,搜了下原来是要装插件: htt ...

  9. vim折叠快捷键

    参考:http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html 1. 折叠方式 可用选项来设定折叠方式: 可在Vim 配置文件中设置 s ...

随机推荐

  1. Java变量和运算符

    1.变量 变量概述 什么是变量?变量是一个内存中的小盒子(小容器),容器是什么?生活中也有很多容器,例如水杯是容器,用来装载水:你家里的大衣柜是容器,用来装载衣裤:饭盒是容器,用来装载饭菜.那么变量是 ...

  2. 【Python初级】StringIO和BytesIO读写操作的小思考

    from io import StringIO; f = StringIO(); f.write('Hello World'); s = f.readline(); print s; 上面这种方法“无 ...

  3. 实验 Unity Linear Color Space 发现结果不符合预期

    美术前上个礼拜找我问光照图总是烘焙过暗的问题,一时兴起我在 Gamma 和 Linear 两个颜色空间切换了下,发现一个 Shader 明暗不同,另一个 毫无变化,于是激发了我去研究下在 Unity ...

  4. (转) redis的事务和watch

    redis的事务 严格意义来讲,redis的事务和我们理解的传统数据库(如mysql)的事务是不一样的. redis中的事务定义 Redis中的事务(transaction)是一组命令的集合. 事务同 ...

  5. [webpack] devtool里的7种SourceMap[转]

    modle: development cheap-source-map debug 不太方便,不是以原来的文件的形式cheap-module-source-map 可以 debugcheap-modu ...

  6. python 学习笔记 - Queue & Pipes,进程间通讯

    上面写了Python如何创建多个进程,但是前面文章中创建的进程都是哑巴和聋子,自己顾自己执行,不会相互交流.那么如何让进程间相互说说话呢?Python为我们提供了一个函数multiprocessing ...

  7. 基础数据类型汇总补充;集合set ;深浅copy

    首先回顾: 小数据池:int -5~256str 特殊字符,*数字20 ascii : 8位 1字节 表示1个字符unicode 32位 4个字节 表示一个字符utf- 8 1个英文 8位,1个字节 ...

  8. Redis学习篇(三)之Key相关操作

    KEYS 作用:返回所有的给定模式的key 语法:KEYS pattern 通配符: *: 任意个字符 ?: 任意一个字符 []: 匹配[]之间的字符 [a-z] [A-Z] \x: 匹配特殊字符 ? ...

  9. []APC001

    题目质量都好高啊... A:求一个是$X$的倍数但不是$Y$的倍数的数,无解输出$-1$ 无解就是$Y|X$,否则输出$X$即可 B:给定$a_{1\cdots n},b_{1\cdots n}$,求 ...

  10. bzoj 1503: [NOI2004]郁闷的出纳员 -- 权值线段树

    1503: [NOI2004]郁闷的出纳员 Time Limit: 5 Sec  Memory Limit: 64 MB Description OIER公司是一家大型专业化软件公司,有着数以万计的员 ...