vim折叠
vim支持文本折叠,将多行文本折叠到一行显示,并提供折叠起来的多行文本的预览。通过折叠,可以更容易明白整个文档的结构。
一个折叠就相当于文档中的一个小节。
vim支持6种折叠方式:
-   manual
 手工定义折叠
-   indent
 根据缩进定义折叠,更多的缩进代表更高的折叠级别
-   expr
 通过一个表达式定义折叠
-   syntax
 通过语法高亮定义折叠
-   diff
 折叠未改变的文本,在使用vimdiff或diffsplit等时,就自动采用这种折叠方式
-   marker
 通过文本中的标记定义折叠
设置折叠方式
通过命令
:set foldmethod=manual
或配置文件中
set foldmethod=manual
来设置折叠方式,默认为手工折叠方式。当比较文本时默认采用diff折叠模式。
手工折叠命令
所有的折叠命令都以z开头,官方文档说,”从一边看,z就像一张折叠起来的纸”,这样方便记忆,还有可以将z理解为zip,也有压缩之意。
-   zf
 创建折叠
 记忆法: zf stands for “F-old creation”
命令格式为:
zf{motion} 或者 {Visual}zf
{motion}是指移动光标位置的命令,{Visual}指可视模式,比如:
zf10j 折叠当前光标开始向后的10行,因为10j是光标向后移动10行
zf9G或zf9gg 折叠当前光标和第9行之间的行,因为9G或9gg移动光标到第9行
8zf 将当前行及之后的8行折叠起来,因为8是光标向后移动8行
zfa命令(可以这样记忆,zf at *)
将光标放置到(,{,[,<等字符上,然后执行
zfa(,zfa{,zfa[,zfa<
等命令,就可以将(),{},[],包围的文本折叠起来
zfap将光标所在的段落(paragraph)折叠起来,一般前后有空行的一段文本称为段落。 zfap可以这样记忆,zf at paragraph
-   :{range}fo[ld]
 在行范围内创建折叠。比如
 :10,20fo 在第10行到20行之间创建折叠
-   zo
 打开折叠
 zp stands for “O-pen a fold”
-   zc
 关闭折叠
 zc standsfor “C-lose a fold”
-   za
 在当前折叠上循环打开、关闭折叠(toggle)
 当在一个关闭的折叠上,打开这个折叠;
 当在一个打开的折叠上,关闭这个折叠,并设置’foldenable’属性
-   zA
 在当前嵌套的折叠上循环打开、关闭折叠(toggle)
 当在一个关闭的折叠上,打开所有嵌套的折叠
 挡在一个打开的折叠上,关闭所有嵌套的折叠,并设置’foldenable’属性
-   zr
 打开所有折叠
 zr stands for “R-educe the folding”
-   zm
 关闭所有折叠
 zm stands for “folds M-ore”
-   zR
 一次全部打开嵌套的折叠
 zR stands for “R-educes folds until there are none left”
-   zM
 关闭所有折叠和嵌套的折叠
 zM stands for “folds M-ore and M-ore”
-   :{range}foldo[pen][!]
 打开指定行范围内的折叠,如果没有指定[!]只打开一层折叠
-   :{range}foldc[lose][!]
 关闭指定行范围内的折叠,如果没有指定[!]只关闭一层折叠
-   zn
 禁止折叠
 zn stands for “no foldenable”
-   zN
 启用折叠
 zN stands for “NO NO foldenable”
-   zi
 在zn和zN之间循环
 zi stands for “Invert foldenable”
-   zd
 删除当前光标下的一个折叠
 zd stands for “delete fold”
-   zD
 删除光标下的所有嵌套的折叠
 zD stands for “Delete more folds”
-   zE
 删除当前窗口的所有折叠
 zE stands for “Eliminate all folds in the window”
-   [z
 移动到当前打开折叠的最开始处
-   ]z
 移动到当前打开折叠的最后
-   zj
 移动到一下个折叠的开始处
-   zk
 移动到上一个折叠的结束处
-   :[range]foldd[oopen] {cmd}
 在所有非关闭折叠的行或行范围[range]内执行命令{cmd}
-   :[range]folddoc[losed] {cmd}
 在关闭折叠的所有行或行范围[range]内执行命令{cmd}
保存折叠
Vim不自动记忆手工折叠。使用以下命令,来保存当前的折叠状态:
:mkview
下次打开文档时,使用下面的命令,来载入记忆的折叠信息:
:loadview
其他折叠方式及相关命令见vim doc