http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html
1. 折叠方式

可用选项来设定折叠方式:

可在Vim 配置文件中设置 set fdm=XXX
可直接在文件中使用注释调用vim命令 /* vim: set fdm=XXX: */

有6种方法来选定折叠:
1    manual          手工定义折叠         
2    indent           更多的缩进表示更高级别的折叠         
3    expr              用表达式来定义折叠         
4    syntax           用语法高亮来定义折叠         
5    diff                对没有更改的文本进行折叠         
6    marker           对文中的标志折叠

注意,每一种折叠方式不兼容,如不能既用expr又用marker方式,我主要轮流使用indent和marker方式进行折叠。

使用时,用 set fdm=marker 命令来设置成marker折叠方式(fdm是foldmethod的缩写)。
要使每次打开vim时折叠都生效,则在.vimrc文件中添加设置,如添加:set fdm=syntax,就像添加其它的初始化设置一样。

2. 折叠命令

选取了折叠方式后,我们就可以对某些代码实施我们需要的折叠了,由于我使用indent和marker稍微多一些,故以它们的使用为例:如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。

在可折叠处(大括号中间):
1    zc      折叠
2    zC     对所在范围内所有嵌套的折叠点进行折叠
3    zo      展开折叠
4    zO     对所在范围内所有嵌套的折叠点展开
5    [z       到当前打开的折叠的开始处。
6    ]z       到当前打开的折叠的末尾处。
7    zj       向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
8    zk      向上移动到前一折叠的结束处。关闭的折叠也被计入。

当使用marker方式时,需要用标计来标识代码的折叠,系统默认是{{{和}}},最好不要改动

我们可以使用下面的命令来创建和删除折叠:

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

http://yyq123.blogspot.com/2011/09/vim-fold.html

当我们查看很长的文本时(比如程序代码),可以使用:set foldenable命令来启动折叠。首先将内容按照其结构折叠起来,查看文件的大纲,然后再针对待定的行展开折叠,显示文本的详细内容。

Vim将折叠等同于行来对待——你可以使用j或k命令,移动跳过包含多行的整个折叠;也可以使用y或d命令,复制或删除某个折叠。

通常在折叠处向左或向右移动光标,或者进入插入模式,都将会自动打开折叠。我们也可以使用以下命令定义快捷键,使用空格键关闭当前打开的折叠,或者打开当前关闭的折叠。

:nnoremap <space> za

按照折叠所依据的规则,可以分为Manual(手工折叠)、Indent(缩进折叠)、Marker(标记折叠)和Syntax(语法折叠)等几种。

Manual Fold

使用以下命令,启用手工折叠。

:set foldmethod=manual

在可视化模式下,使用以下命令,将折叠选中的文本:

zf

通过组合使用移动命令,可以折叠指定的行。例如:使用zf70j命令,将折叠光标之后的70行;使用5zF命令,将当前行及随后4行折叠起来;使用zf7G命令,将当前行至全文第7行折叠起来。

我们也可以使用以下命令,折叠括号(比如()、[]、{}、><等)包围的区域:

zfa(

Vim并不会自动记忆手工折叠。但你可以使用以下命令,来保存当前的折叠状态:

:mkview

在下次打开文档时,使用以下命令,来载入记忆的折叠信息:

:loadview

可以使用以下命令,查看关于手工折叠的帮助信息:

:help fold-manual

Indent Fold

使用以下命令,启用缩进折叠。所有文本将按照(选项shiftwidth 定义的)缩进层次自动折叠。

:set foldmethod=indent

使用zm命令,可以手动折叠缩进;而利用zr命令,则可以打开折叠的缩进。

使用以下命令,将可以根据指定的级别折叠缩进:

:set foldlevel=1

可以使用以下命令,查看关于缩进折叠的帮助信息:

:help fold-indent

Syntax Fold

使用以下命令,启用语法折叠。所有文本将按照语法结构自动折叠。

:set foldmethod=syntax

可以使用以下命令,查看关于语法折叠的帮助信息:

:help fold-syntax

Marker Fold

使用以下命令,启用标记折叠。所有文本将按照特定标记(默认为{{{和}}})自动折叠。

:set foldmethod=marker

我们可以利用标记折叠,在文本中同时体现结构和内容,并且能够快速跳转到文件的不同部分。

可以使用以下命令,查看关于标记折叠的帮助信息:

:help fold-marker

折叠选项

使用:set foldcolumn=W命令(W是一个0-12的整数),将在屏幕左侧显示一个折叠标识列,分别用“-”和“+”而表示打开和关闭的折叠。

使用以下命令,可以查看关于折叠的帮助信息:

:help folding

命令小结
zc 关闭当前打开的折叠
zo 打开当前的折叠
zm 关闭所有折叠
zM 关闭所有折叠及其嵌套的折叠
zr 打开所有折叠
zR 打开所有折叠及其嵌套的折叠
zd 删除当前折叠
zE 删除所有折叠
zj 移动至下一个折叠
zk 移动至上一个折叠
zn 禁用折叠
zN 启用折叠

转载于:https://www.cnblogs.com/xuxm2007/archive/2011/11/10/2244418.html

vim 折叠的用法相关推荐

  1. vim的高级用法配置以及在系统中如何获取帮助

    vim的高级用法配置以及在系统中如何获取帮助 1 vim的三种模式 1.1 使用方法 1.2 vim模式 2 vim工作的基本配置 2.1 临时设定(set设定) 2.2 永久设定方式 3 搜索 4 ...

  2. VIM编辑器初学者用法指南——vim中无法使用冒号更改Ubuntu的输入法解决

    VIM编辑器初学者用法指南 一.vim打开文件: 二.vim编辑文件: 三.退出编辑模式 四.保存文件并退出Vim编辑器 Vim编辑器是Unix系统最初的编辑器,内置有两种操作模式:普通模式和插入模式 ...

  3. linux vim 高级,Vim命令高级用法

    1.启动-R  只读方式打开,但打开后如果有权限,可以强制执行保存. -c (command) 加载后执行命令,比如"vim -c /most myfirst" 打开该文件后直接向 ...

  4. vim折叠的使用方法

    :  set  foldmethod=manual 然后输入zfap就ok了 如图所示: 但仍然不够随意定制,有没有更好的办法呢? 目前非常喜欢: foldmethod需要置于manual模式下:se ...

  5. linux vim编辑器的用法

    vim编辑器 文本编辑器,字处理器 ASCII nano, sed vi: Visual Interface vim: VI iMproved 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模 ...

  6. [倚天屠龙记] vim 折叠

    这一节讲述vim的一个非常实用的功能----折行功能,它可以将暂时不关心的连续若干行折叠成一行显示,在需要时再予以展开.下面是本文写作时的情形: 折叠的主要创建方式有手工创建.语法折叠.按缩进等级折叠 ...

  7. Vim 的高级用法配置

    1.vim 的三种模式 vim是全球两大流行的文本编辑器之一 vim file #直接编辑文件的内容. vim                wq file                  file ...

  8. ajaxToolKit中 的折叠面板用法--Accordion

    1)在web.config 的<controls>中增中<add namespace="AjaxControlToolkit" assembly="Aj ...

  9. 折叠::Vim进阶索引[2]

    折叠::Vim进阶索引[2] Table of Contents Vim进阶索引[2]::折叠 1 折叠有什么用途? 2 折叠的生成 2.1 折叠层级 2.2 手工规则(manual) 2.3 缩进规 ...

最新文章

  1. 无线信标功能调试-2021-3-9-输出功率恒定限制
  2. [NIO系列]NIO源码分析之Buffer
  3. console.log()不显示结果_RNA结合蛋白与RNA的缠绵故事,教你不做实验发文章
  4. LeetCode 2194. Excel 表中某个范围内的单元格
  5. mysql分表方法实现
  6. 现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心...
  7. 海天味业打造高端调味品领衔食品美味
  8. 如何在input输入框中加一个搜索的小图片_仿淘宝搜索栏
  9. 自定义QListWidget实现item被hover时改变图标样式(模仿网易云音乐选项列表)(方法一)
  10. VisualGDB系列10:快速调试Linux应用程序
  11. 趣学 C 语言(九)—— 复杂指针解析
  12. 优化理论13----黄金分割法、单峰函数、python实现及验证
  13. 基于matlab遗传算法工具箱的曲线拟合,基于Matlab遗传算法工具箱的曲线拟合
  14. PN5180射频识别芯片学习笔记
  15. FPGA学习任意波函数信号发生器的设计(基于quartus II13.0)
  16. 均线颜色怎么区分_六种颜色的均线包括哪六种颜色,其代表的含义分别是什么?...
  17. 生成yolov5.wts文件出错
  18. P3537 [POI2012]SZA-Cloakroom
  19. 制作自定义springboot banner
  20. 程序员要为了生活而工作,不要为了工作而生活。

热门文章

  1. 请你说明一下TreeMap的底层实现?
  2. 使用Amoeba实现MySQL读写分离详细步骤(推荐的方式)
  3. RabbitMQ消息轮询重发消息(消息补偿)
  4. Git创建版本库详尽教程
  5. sublime text常用快捷键及多行光标批量操作教程
  6. 通信系统设计与python的书_腾讯十年Python开发老司机推荐的入门书籍,你确定不看吗?...
  7. mysql主从备份失败--记录现象
  8. Oracle 原理:高水位线、PCTFREE、PCTUSED、索引组织表、簇表、临时表
  9. 域名系统DNS、文件传送协议FTP、动态主机配置协议DHCP、远程登录协议TELNET、电子邮件协议(SMTP/POP3/IMAP)、常用端口
  10. ArrayList源码