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