以下是我学习vim折叠的总结,很多来自参考文章。
1.开启折叠功能
在~/.vimrc中添加set foldenable,或每次用vim打开文件时候用命令:set foldenable
2.设置折叠的方式
在~/.vimrc中输入set foldmethod=xxx或set fdm=xxx,或在vim中输入:如上命令,xxx为如下6中打开方式。
在~/.vimrc中设置每次打开都有效。
注意,每一种折叠方式不兼容,如不能既用expr又用marker方式。
有6种方法来选定折叠:
manual 手工定义折叠
indent 更多的缩进表示更高级别的折叠
expr 用表达式来定义折叠
syntax 用语法高亮来定义折叠
diff 对没有更改的文本进行折叠
marker 对文中的标志折叠
3. 折叠命令
选取了折叠方式后,我们可以采用以下命令进行折叠,如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。
在可折叠处(大括号中间):
zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
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" 时有效。
zfgg 从当前位置折叠到文件头,适合头文件的注释
仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
另外可以使用以下命令进行折叠的全部打开和关闭
一次打开所有折叠:
zr zR(用于有递归折叠的时候,功能与zr类似)
一次关闭所有折叠:
zm zM(用于有递归折叠的时候,功能与zm类似)
4.折叠控制
有时候,查看或记住一个折叠在哪儿,挺不容易的。更别说用|zo| 命令来打开了。要查看那些已定义的折叠:
:set foldcolumn=4
这个命令将在窗口左边显示一小栏来标识各个折叠。一个"+" 表示某个关闭的折叠。一个"-" 表示每个打开的折叠的开头,而"|" 则表示该折叠内其余的行。
取消左边的小栏:
:set foldcolumn=0
5.存储和恢复一个折叠:
当你关闭一个文件,去做其他事情,或编辑其他文件,回来以后编辑同一个文件,如果折叠是手动方式创建的,则所有的折叠都消失了!为了保存折叠,可以使用:
:mkview
这将存储那些影响文件视图的设定及其他内容。
稍后回到同一个文件时,可以重新载入这个视图:
:loadview
你可以为一个文件储存多至十个视图。例如,把当前设置储存为第三个视图,并载入第二个视图:
:mkview 3
:loadview 2
参考文章:
http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html
http://www.cnblogs.com/fstang/archive/2012/11/28/2793171.html
1.开启折叠功能
在~/.vimrc中添加set foldenable,或每次用vim打开文件时候用命令:set foldenable
2.设置折叠的方式
在~/.vimrc中输入set foldmethod=xxx或set fdm=xxx,或在vim中输入:如上命令,xxx为如下6中打开方式。
在~/.vimrc中设置每次打开都有效。
注意,每一种折叠方式不兼容,如不能既用expr又用marker方式。
有6种方法来选定折叠:
manual 手工定义折叠
indent 更多的缩进表示更高级别的折叠
expr 用表达式来定义折叠
syntax 用语法高亮来定义折叠
diff 对没有更改的文本进行折叠
marker 对文中的标志折叠
3. 折叠命令
选取了折叠方式后,我们可以采用以下命令进行折叠,如果使用了indent方式,vim会自动的对大括号的中间部分进行折叠,我们可以直接使用这些现成的折叠成果。
在可折叠处(大括号中间):
zc 折叠
zC 对所在范围内所有嵌套的折叠点进行折叠
zo 展开折叠
zO 对所在范围内所有嵌套的折叠点展开
[z 到当前打开的折叠的开始处。
]z 到当前打开的折叠的末尾处。
zj 向下移动。到达下一个折叠的开始处。关闭的折叠也被计入。
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" 时有效。
zfgg 从当前位置折叠到文件头,适合头文件的注释
仅当 'foldmethod' 设为 "manual" 或 "marker" 时有效。
另外可以使用以下命令进行折叠的全部打开和关闭
一次打开所有折叠:
zr zR(用于有递归折叠的时候,功能与zr类似)
一次关闭所有折叠:
zm zM(用于有递归折叠的时候,功能与zm类似)
4.折叠控制
有时候,查看或记住一个折叠在哪儿,挺不容易的。更别说用|zo| 命令来打开了。要查看那些已定义的折叠:
:set foldcolumn=4
这个命令将在窗口左边显示一小栏来标识各个折叠。一个"+" 表示某个关闭的折叠。一个"-" 表示每个打开的折叠的开头,而"|" 则表示该折叠内其余的行。
取消左边的小栏:
:set foldcolumn=0
5.存储和恢复一个折叠:
当你关闭一个文件,去做其他事情,或编辑其他文件,回来以后编辑同一个文件,如果折叠是手动方式创建的,则所有的折叠都消失了!为了保存折叠,可以使用:
:mkview
这将存储那些影响文件视图的设定及其他内容。
稍后回到同一个文件时,可以重新载入这个视图:
:loadview
你可以为一个文件储存多至十个视图。例如,把当前设置储存为第三个视图,并载入第二个视图:
:mkview 3
:loadview 2
参考文章:
http://www.cnblogs.com/fakis/archive/2011/04/14/2016213.html
http://www.cnblogs.com/fstang/archive/2012/11/28/2793171.html