折叠入门
回忆上次
- 上次学习了一种新的容器
tabs选项卡 -
tabs选项卡 包含多个选项卡tab- 可以列两个
tab - 一个编写文件
- 一个执行指令
- 互不影响
- 可以列两个
-
每个
tab选项卡 还可以对应多个window- 可以开两个
window对比不同 - 或者在很长的文档上下对比
- 新建
tab-:tabnew - 切换
tab- gt、gT - 指定
tab-1gt2gt3gt - 关闭
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就是打包foldzf后面可以加motion
- 因为
-
zf4G- 从光标位置到第4行
- 打一个包
- 然后我们就可以看到这几行变成了一行
- 真的发生了折叠! 😝
开关折叠
- 我们可以把光标放到折叠之后的那一行
-
zo可以打开折叠- 第一个
z是折叠 - 第二个
o是open打开
- 第一个
-
zc可以关闭- 第一个
z是折叠 - 第二个
c是close关闭
- 第一个
-
这两个是折叠最常用的命令
- 打开
- 关闭
折叠树
-
我们可以设置左侧折叠树
foldcolumn:set foldcolumn=4-
就在最左边有4列专门负责打开和关闭折叠的显示
- +是关闭
- -是打开
-
可以反复横跳来玩
- 只要有+、-的地方就可以zc、zo
-
多重折叠
- 可以折叠带有折叠的行
- 也就是折叠的嵌套
- 折叠多了容易乱
- 我们要手动删除折叠
取消和再次折叠
-
删除折叠的快捷键是
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
foldlevel- 显示折叠层次foldcolumn- 折叠树宽度-
foldmethod- 折叠方式manual- 手动indent- 缩进
-
折叠的定义
-
zf2j- 当前行和下面两行建立折叠
-
zfa{- 用大括号(包含)建立折叠
-
zfi{- 用大括号(不包含)建立折叠
-
-
折叠的删除
zd
-
折叠的打开和关闭
zoopenzcclose:set foldlevel=1设置折叠层次
- 这个缩进折叠可以对于程序文件使用么?🤔
- 下次再说!
[Github地址] (











浙公网安备 33010602011771号