oeasy教您玩转vim - 69 - # 折叠folding入门
折叠入门
回忆上次
上次学习了一种新的容器
tabs
选项卡tabs
选项卡 包含多个选项卡tab
可以列两个
tab
一个编写文件
一个执行指令
互不影响
每个
tab
选项卡 还可以对应多个window
可以开两个
window
对比不同或者在很长的文档上下对比
新建
tab
-:tabnew
切换
tab
-gt、gT指定
tab
-1gt
2gt
3gt
关闭
tab
-:tabc
列表
tab
-:tabs
除了这些之外还有别的容器吗?🤔
还是有的!
折叠folding
这次的容器不在
buffer
缓存 之外而在
buffer
缓存 内部是折叠文字
怎么折叠呢?

好比说我们这里有个
css
文件在
http://github.com/overmind1980/oeasyvim.git
里面找到
oeasy.css
创建折叠

zf6G
报错了

:h E350
E350

:set foldmethod?
:h foldmethod

手动模式
把折叠模式设置为manual
:set foldmethod=manual
我们的
folding
折叠都和字母z相关因为
z
就像一摞纸张打包之后的样子zf
就是打包fold
zf
后面可以加motion
zf4G
从光标位置到第4行
打一个包
然后我们就可以看到这几行变成了一行
真的发生了折叠! 😝

开关折叠
我们可以把光标放到折叠之后的那一行
zo
可以打开折叠第一个
z
是折叠第二个
o
是open
打开zc
可以关闭第一个
z
是折叠第二个
c
是close
关闭这两个是折叠最常用的命令
打开
关闭
折叠树
我们可以设置左侧折叠树
foldcolumn
只要有+、-的地方就可以zc、zo
可以反复横跳来玩
+是关闭
-是打开
:set foldcolumn=4
就在最左边有4列专门负责打开和关闭折叠的显示
多重折叠
可以折叠带有折叠的行
也就是折叠的嵌套
折叠多了容易乱
我们要手动删除折叠

取消和再次折叠

删除折叠的快捷键是
zd
顾名思义
-z
是折叠d
是删除来试试
在左侧
foldcolumn
是+
的地方使用命令zd删除当前光标位置对应的折叠
如果折叠是嵌套的
先删除内层的折叠
zD
是递归地删除折叠可以把当前光标的递归折叠都删除

如果折叠都被删没有了
可以先
zf2j
创建一些折叠好,我们把所有的折叠都删干净了
然后我们试试创建折叠更好的方法
利用{}创建折叠
zf
是创建折叠zf2j
中的2j
是motion
可以在{}内使用
zfa{
创建当前标记的折叠可用
zfi{
创建折叠效果如下图
试一下

能不能一把打开所有的折叠呢?
折叠层次
有这样一个属性叫做
foldlevel
折叠层次
到底怎么用呢?
:set foldlevel=0
折叠都关了
:set foldlevel=1
折叠都开了
还是挺方便的
不过每个大括号都要自己创造折叠
是否能够自动创建折叠呢?

缩进折叠
首先我们退出当前这个文件
然后重新打开
打开之后先观察当前的折叠模式
:set foldmethod?
如果是manual
:set foldmethod=indent
把他强制设置为缩进折叠
可以把这句话写进
~/.vimrc
这样每次都是缩进折叠了我觉得缩进折叠还是很方便的
:set foldcolumn=4
出现折叠树
:set foldlevel=0
全部隐藏
:set foldlevel=1
全部打开
indent折叠要求缩进必须严格符合要求
gg=G
可以帮助你控制缩进
总结
这次我们讲的是折叠
折叠有很多options
manual
- 手动indent
- 缩进foldlevel
- 显示折叠层次foldcolumn
- 折叠树宽度foldmethod
- 折叠方式折叠的定义
用大括号(不包含)建立折叠
用大括号(包含)建立折叠
当前行和下面两行建立折叠
zf2j
zfa{
zfi{
折叠的删除
zd
折叠的打开和关闭
zo
openzc
close:set foldlevel=1
设置折叠层次这个缩进折叠可以对于程序文件使用么?🤔
下次再说!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)