0007 vim代码折叠功能

问题:怎样在vim中实现代码折叠功能?

解决方法:直接使用vim自带的快捷键和命令,便可以实现功能强大的折叠

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

折叠方法:
1  manual  (不常用)默认折叠方法,如上面第7步即为该方法,关闭vim折叠会丢失。如果想保持折叠信息,可运行 :mkview 命令,重启后用 :loadview 命令回复。该命令生成的缓存文件位于 ~/.vim/view 文件夹中。移动或重命名文件,折叠信息依然会丢失。
2  indent  (常用)缩进折叠方法,相同的缩进中代码会被折叠。
3  syntax  (不常用)语法高亮折叠,在c/c++中会折叠花括号部分,其它格式代码中有的不能自动折叠。
4  marker  (常用)标记折叠方法,如上面1-6所使用的方法。关闭vim折叠信息不会丢失,而且易用控制和标注。
5  还有两种 diff 和 expr,目前我还没有用过。

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

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

打开和关闭折叠:
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。

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

参考:
在vim中运行 :h Folding 命令,查看折叠的帮助文档。

时间: 2025-01-02 19:01:54

0007 vim代码折叠功能的相关文章

VIM 代码折叠

VIM 代码折叠 VIM代码折叠方式可以用"foldmethod"选项来设置,如: set foldmethod=indent 有6种方式来折叠代码 1. manual //手工定义折叠 2. indent //用缩进表示折叠 3. expr //用表达式来定义折叠 4. syntax //用语法高亮来定义折叠 5. diff   //对没有更改的文本进行折叠 6. marker //用标志折叠 vim 配置文件分为全局配置文件和用户配置文件 1. 全局配置文件查找,在.vim 中输入

找回Xcode7的代码折叠功能

升级到Xcode7后,会发现代码折叠功能不见了,这是怎么回事? 其实这个功能还在的,只是苹果默认把这个功能禁掉了:在Xcode菜单里选择Preference--Text Editing,你会发现里面有一个"code folding ribbon",勾选它就能恢复代码折叠功能了. 然后通过菜单Editor--Code Folding,你就可以使用你需要的折叠功能. 相关快捷键: 局部折叠(折叠一个函数)                 :Command+Option+Left/Right

vim代码折叠命令

1. 折叠方式 可用选项 'foldmethod' 来设定折叠方式:set fdm=*****. 有 6 种方法来选定折叠:           manual           手工定义折叠 indent             更多的缩进表示更高级别的折叠 expr                用表达式来定义折叠 syntax             用语法高亮来定义折叠 diff                  对没有更改的文本进行折叠 marker            对文中的标志

UltraEdit 启用和禁止代码折叠功能

UltraEdit 十分强大,作为代码编辑器有代码折叠比较实用,默认此功能是打开的. 而作为文本查看工具,如程序 log 文件查看工具代码折叠则十分不方便 因为log文件动辄几百上千行,代码折叠影响查看. 在高级-->配置-->选项卡中: Editor Display下的code Folding选项面板中设置. 附上破解版下载:UltraEdit Version 20.00.0.1037 英文破解版

vim代码折叠命令简介

作者:zhanhailiang 日期:2014-10-18 1. 通过fdm实现代码折叠:set fdm=xxx 有以下6种方式实现折叠: |fold-manual| manual Folds are created manually. |fold-indent| indent Lines with equal indent form a fold. |fold-expr| expr 'foldexpr' gives the fold level of a line. |fold-marker|

代码折叠

升级到Xcode7后,会发现代码折叠功能不见了,这是怎么回事? 其实这个功能还在的,只是苹果默认把这个功能禁掉了:在Xcode菜单里选择Preference——Text Editing,你会发现里面有一个“code folding ribbon”,勾选它就能恢复代码折叠功能了. 然后通过菜单Editor——Code Folding,你就可以使用你需要的折叠功能. 相关快捷键: 局部折叠(折叠一个函数)                 :Command+Option+Left/Right 全局折叠

eclipse代码折叠/展开之笔记本快捷键设置<非原创>

首先 在eclipse 中开启设置代码折叠功能 1. windows->perferences->General->Editors->Structured Text Editors 可以看到Enable folding选项,打上勾就可以使用代码折叠功能,但还要在具体的语言中设置.2.windows->perferences->Java->Editors->Folding 可以看到Enable folding选项,打上勾就可以使用代码折叠功能. 完成以上两步就

VIM设置代码折叠

VIM设置代码折叠 今天看了一下别人写的程序的源代码,发现是用vim写的,代码中有趣是用vim来折叠代码,一开始我以为是用插件的,后来上网查了查,得出以下使用方面的技巧. 1. 折叠方式 可用选项来设定折叠方式: 可在Vim 配置文件中设置 set fdm=XXX 可直接在文件中使用注释调用vim命令 /* vim: set fdm=XXX: */ 有6种方法来选定折叠: 1 2 3 4 5 6 . manual          手工定义折叠 . indent           更多的缩进表

使用prismjs为网站添加代码高亮功能

prismjs 是一款轻量.可扩展的代码语法高亮库,使用现代化的 Web 标准构建,使用 Prismjs 可以快速为网站添加代码高亮功能,支持超过113中编程语言,还支持多种插件,是简洁.高效的代码高亮解决方案.科技爱好者博客就是使用了Prism.js 实现漂亮的代码语法高亮功能,本文教你如何在wordpress上快速使用Prismjs实现代码高亮. 一.下载JS和CSS文件并上传到网站根目录. 在Prismjs网站下载页面下载需要的JS和CSS文件,下载页面: http://prismjs.c