VIM/GVIM中代码的折叠和打开

        前言:在查看代码的时候,如果代码十分冗长,尤其是c/c++系列的时候,代码结构比较让人难以理清,主要是各种注释、括号的匹配问题,虽然可以用%来查看匹配的另外一半符号在哪里,但是如果这一对符号之间的代码超过了一页,甚至好几页的话,那么也是比较难以理解的。于是可以使用这个vim所提供的折叠功能来简化这些分析。

  • 小试折叠

1  :set fdm=marker  在vim中执行该命令
2  5G  将光标跳转到第5行
3  zf10G  折叠第5行到第10行的代码,vim会在折叠的开始和结束自动添加三个连续的花括号作为标记
4  zR  打开所有折叠
5  zM  关闭所有折叠
6  zE  删除所有的折叠标签
7  退出vim窗口再次打开,执行2-6步。依然可以折叠,但是没有标记了。重新打开后折叠信息会丢失。

  • 折叠的方式:vim 提供 6中折叠方式
manual             手工定义折叠
indent             更多的缩进表示更高级别的折叠
expr               用表达式来定义折叠
syntax             用语法高亮来定义折叠
diff               对没有更改的文本进行折叠
marker             对文中的标志折叠
  • 具体介绍:
  1. 以 marker 为例,可以在vim中运行 :set fdm=marker 来设置折叠方法设置。折叠方法的时候,= 两边不能有空格。也可以将该命令添加到~/.vimrc中,实现vim自动加载。
  2. 在使用小试折叠中 2,3 步折叠的时候,vim会自动添加三个连续的花括号作为标记,可在开始的花括号前添加介绍,花括号后添加级别号,级别号不能为0。如:/*折叠介绍{{{1*/                                              /*}}}*/
  3. 级别的定义稍显复杂。在一般编码中,通常把不需要修改的代码添加标记折叠。没有必要在给折叠分等级。如果想快速折叠就切换为indent折叠方面,适用于任何有缩进的代码。

一、可用选项 'foldmethod' 来设定折叠方式:set fdm=*****。

(1)注意,每一种折叠方式不兼容,即:你不能用expr又用marker方式。目前我一般使用的都是indent 比较多。
(2)使用时,用:set fdm=indent 命令来设置成marker折叠方式。
(3)在.vimrc文件中添加设置,可以使得每次打开vi 都启动折叠方式。如添加:

set fdm=syntax 

二、折叠打开与折合

选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了。如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。indent 对应的折叠代码有:

zc       折叠
zC       对所在范围内所有嵌套的折叠点进行折叠
zo       展开折叠
zO       对所在范围内所有嵌套的折叠点展开
[z       到当前打开的折叠的开始处。
]z       到当前打开的折叠的末尾处。
zj       向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
zk       向上移动到前一折叠的结束处。关闭的折叠也被计入。

2.1 创建折叠

1  zf  创建折叠,可以按照前面的方式进行折叠,也可以选中代码后进行折叠。 
2  zF  在当前行创建折叠。当一开始就计划要折叠所写代码的时候,可以用该命令创建一对折叠符号,然后再往里面填写内容。
3  :5,10fo  在vim中运行该命令会在折叠 5-10 行中的代码,可以用其它数字代替之。
4  zd  删除光标下的折叠。
5  zD  删除光标下的折叠,以及嵌套的折叠。
6  zE  删除窗口内的所有折叠。仅当 manual 和 marker 折叠方法下有效。

2.2  打开和关闭折叠

1  zo  打开光标下的折叠。
2  zO  打开光标下的折叠,以及嵌套的折叠。
3  zc  关闭光标下的折叠。
4  zC  关闭光标下的折叠,以及嵌套的折叠。
5  za  当光标在关闭折叠上时,打开之。在打开折叠上时,关闭之。
6  zA  和za类似,不过对当前折叠和其嵌套折叠都有效。
7  zv  打开当前光标所在折叠,仅打开足够的折叠使光标所在的行不被折叠。
8  zr和zm  一层一层打开折叠和一层一层关闭折叠,这两个命令会递减和递增一个叫foldlevel的变量。如果你发现zm和zr不灵了,那有可能是你连续按的zr或zm次数多了,只要多按几次让foldlevel回到正常状态即可。执行以下zR和zM也可直接让foldlevel回到正常状态。
9  zR和zM  打开所有折叠,设置foldlevel为最高级别。关闭所有折叠,设置foldlevel为0。

2.3 光标在折叠间移动

1  [z  到当前打开折叠的开始。如果已在开始处,移到包含这个折叠的折叠开始处。
2  ]z  到当前打开折叠的结束。如果已在结束处,移到包含这个折叠的折叠结束处。
3  zj  把光标移动到下一个折叠的开始处。
4  zk  把光标移动到前一个折叠的结束处。

三、使用时在大括号中间输入以上命令。

当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动之:)可以使用下面的命令来创建和删除折叠:

zf      创建折叠,比如在marker方式下:zf56G,创建从当前行起到56行的代码折叠;10zf或10zf+或zf10↓,创建从当前行起到后10行的代码折叠。10zf-或zf10↑,创建从当前行起到之前10行的代码折叠。在括号处zf%,创建从当前行起到对应的匹配的括号上去((),{},[],等)。
zd      删除 (delete) 在光标下的折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zD      循环删除 (Delete) 光标下的折叠,即嵌套删除折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
zE      除去 (Eliminate) 窗口里“所有”的折叠。仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。

文章转自:Link

[VIM]VIM/GVIM中代码的折叠和打开相关推荐

  1. vim 中代码的折叠和打开

    文章转载自:http://liufabin66688.blog.163.com/blog/static/13968548200810140486304/ 仅用于个人学习备查收藏. 在查看代码的时候,如 ...

  2. Linux——VIM中代码的折叠和打开

    文章转自:http://liufabin66688.blog.163.com/blog/static/13968548200810140486304/ 在查看代码的时候,如果代码十分冗长,尤其是c/c ...

  3. vim的代码折叠:设置默认代码不折叠

    有时候看代码时,代码太长看着不方便,特别是阅读源码时,需要把不关心的代码先折叠起来,看自己当前最关注的代码.vim中自带了代码折叠功能. 配置foldmethod可以定义折叠方式,有6种可选方式: 1 ...

  4. vim cscope java_在Vim(gvim)中使用cscope

    之前已经详细的介绍了在 vim中使用ctags ,这篇文章我们就来详细介绍一下如何在vim中使用cscope. 首先,我们还是了解一下什么是cscope.简单来讲,cscope主要用来协助浏览C/C+ ...

  5. vim使用过程中的以前的消息和错误消息代码介绍

    本文包含一个 Vim 产生的消息和错误信息按字母排序的列表.如果你不理解消息的含义,可以在这里查找.不过,该列表不一定完整.部分翻译可能不是很准确,敬请谅解,如果你想添加可以在本文留言讨论. 本文约定 ...

  6. linux中vim怎么分栏,Vim+Taglist+AutoComplPop之代码目录分栏信息和自动补全提示(Ubuntu环境)...

    一步: 首先在Ubuntu环境中安装ctags:  sudo apt-get install ctags 第二部: 解压: 1.$unzip -d taglist taglist_xx.zip 2.$ ...

  7. VIM使用系列之一——配置VIM下编程和代码阅读环境

    作者:gnuhpc from http://blog.csdn.net/gnuhpc  http://gnuhpc.wordpress.com/ 本文环境:ubuntu 10.10/vim7.2 前言 ...

  8. vim与gvim技巧大全

    转自:http://blog.163.com/lgh_2002/blog/static/44017526200941343548691/ 第二部分:vim tips的翻译 很多东东都对于深入认识vim ...

  9. vim、gvim在windows下中文乱码的终极解决方案

    From: http://www.liuhuadong.com/archives/68/index.html vim.gvim在windows下中文乱码的终极解决方案 在windows下vim的中文字 ...

最新文章

  1. JDK 序列化, 碰到serialVersionUID 不一致问题,怎么处理?
  2. 领取Virmach免费Minecraft主机搭建“我的世界”服务器
  3. 软件工程(2019)第三次个人作业
  4. 普通爬虫有啥意思,我写了个通用Scrapy爬虫
  5. android sdk更新代理设置
  6. jsp文件上传_猿蜕变系列7——也说说springMVC上传姿势
  7. 数据:以太坊上稳定币流通量突破600亿美元,年内增幅达187%
  8. eclipse 反编译插件 图文
  9. yigo2.0定时器集合
  10. 问:平面布置图是什么?有什么作用?如何判断好的平面布置图方案?如何绘制?
  11. 生活时尚酒店品牌JOJOE进军中国,首批选址7个城市,未来将开设至少1300家门店 | 美通社头条...
  12. 2022年江西最新建筑八大员(质量员)模拟考试题库及答案解析
  13. BP神经网络需要训练的参数,bp神经网络训练时间
  14. excel 删除多余回车
  15. 方舟编译器将开源!华为邀广大开发者助力鸿蒙系统
  16. VR+农业的碰撞,VR数字农业的实际应用有哪些?
  17. php的两种安装方式,PHP的安装方法
  18. 【干货】2020年最新编程视频教程,速度收藏!!
  19. 3dsmax中计算机快捷键大全,3Dmax快捷键大全
  20. Dynamo For Revit: 快速体育场造型

热门文章

  1. 微信小程序如何批量生成带参数的小程序码,无需开发
  2. VB6播放MP3小程序
  3. 青少年关联网络功能地形的性别差异
  4. java 面向对象编程之二
  5. Generative Adversarial Networks简介
  6. Ubuntu16.04开机左上角一条横杠以及局域网无法远程登录等问题
  7. 拆车、炸机、毁魔方,这个疯狂的算法竞赛少年目的是这样的…
  8. 2019初三计算机考试模拟,初三学生特别关注:2019年中考模拟试卷正式发布!五月份练起来...
  9. 代理IP的背后原理简单介绍与python写一个获取代理IP的爬虫
  10. 将多个k8s集群在同一台主机上使用kubectl进行管理