oeasy教您玩轉(zhuǎn)vim - 69 - # 折疊folding入門
折疊入門
回憶上次
上次學(xué)習(xí)了一種新的容器
tabs
選項(xiàng)卡tabs
選項(xiàng)卡 包含多個(gè)選項(xiàng)卡tab
可以列兩個(gè)
tab
一個(gè)編寫文件
一個(gè)執(zhí)行指令
互不影響
每個(gè)
tab
選項(xiàng)卡 還可以對(duì)應(yīng)多個(gè)window
可以開兩個(gè)
window
對(duì)比不同或者在很長(zhǎng)的文檔上下對(duì)比
新建
tab
-:tabnew
切換
tab
-gt、gT指定
tab
-1gt
2gt
3gt
關(guān)閉
tab
-:tabc
列表
tab
-:tabs
除了這些之外還有別的容器嗎???
還是有的!
折疊folding
這次的容器不在
buffer
緩存 之外而在
buffer
緩存 內(nèi)部是折疊文字
怎么折疊呢?

好比說我們這里有個(gè)
css
文件在
http://github.com/overmind1980/oeasyvim.git
里面找到
oeasy.css
創(chuàng)建折疊

zf6G
報(bào)錯(cuò)了

:h E350
E350

:set foldmethod?
:h foldmethod

手動(dòng)模式
把折疊模式設(shè)置為manual
:set foldmethod=manual
我們的
folding
折疊都和字母z相關(guān)因?yàn)?
z
就像一摞紙張打包之后的樣子zf
就是打包fold
zf
后面可以加motion
zf4G
從光標(biāo)位置到第4行
打一個(gè)包
然后我們就可以看到這幾行變成了一行
真的發(fā)生了折疊! ??

開關(guān)折疊
我們可以把光標(biāo)放到折疊之后的那一行
zo
可以打開折疊第一個(gè)
z
是折疊第二個(gè)
o
?是open
打開zc
可以關(guān)閉第一個(gè)
z
是折疊第二個(gè)
c
是close
關(guān)閉這兩個(gè)是折疊最常用的命令
打開
關(guān)閉
折疊樹
我們可以設(shè)置左側(cè)折疊樹
foldcolumn
只要有+、-的地方就可以zc、zo
可以反復(fù)橫跳來玩
+是關(guān)閉
-是打開
:set foldcolumn=4
就在最左邊有4列專門負(fù)責(zé)打開和關(guān)閉折疊的顯示
多重折疊
可以折疊帶有折疊的行
也就是折疊的嵌套
折疊多了容易亂
我們要手動(dòng)刪除折疊

取消和再次折疊

刪除折疊的快捷鍵是
zd
顧名思義
?-z
是折疊d
是刪除來試試
在左側(cè)
foldcolumn
是+
的地方使用命令zd刪除當(dāng)前光標(biāo)位置對(duì)應(yīng)的折疊
如果折疊是嵌套的
先刪除內(nèi)層的折疊
zD
是遞歸地刪除折疊可以把當(dāng)前光標(biāo)的遞歸折疊都刪除

如果折疊都被刪沒有了
可以先
zf2j
創(chuàng)建一些折疊好,我們把所有的折疊都刪干凈了
然后我們?cè)囋噭?chuàng)建折疊更好的方法
利用{}創(chuàng)建折疊
zf
是創(chuàng)建折疊zf2j
中的2j
是motion
可以在{}內(nèi)使用
zfa{
創(chuàng)建當(dāng)前標(biāo)記的折疊可用
zfi{
創(chuàng)建折疊效果如下圖
試一下

能不能一把打開所有的折疊呢?
折疊層次
有這樣一個(gè)屬性叫做
foldlevel
折疊層次
到底怎么用呢?
:set foldlevel=0
折疊都關(guān)了
:set foldlevel=1
折疊都開了
還是挺方便的
不過每個(gè)大括號(hào)都要自己創(chuàng)造折疊
是否能夠自動(dòng)創(chuàng)建折疊呢?

縮進(jìn)折疊
首先我們退出當(dāng)前這個(gè)文件
然后重新打開
打開之后先觀察當(dāng)前的折疊模式
:set foldmethod?
如果是manual
:set foldmethod=indent
把他強(qiáng)制設(shè)置為縮進(jìn)折疊
可以把這句話寫進(jìn)
~/.vimrc
這樣每次都是縮進(jìn)折疊了我覺得縮進(jìn)折疊還是很方便的
:set foldcolumn=4
出現(xiàn)折疊樹
:set foldlevel=0
全部隱藏
:set foldlevel=1
全部打開
indent折疊要求縮進(jìn)必須嚴(yán)格符合要求
gg=G
可以幫助你控制縮進(jìn)
總結(jié)
這次我們講的是折疊
折疊有很多options
manual
- 手動(dòng)indent
- 縮進(jìn)foldlevel
- 顯示折疊層次foldcolumn
- 折疊樹寬度foldmethod
- 折疊方式折疊的定義
用大括號(hào)(不包含)建立折疊
用大括號(hào)(包含)建立折疊
當(dāng)前行和下面兩行建立折疊
zf2j
zfa{
zfi{
折疊的刪除
zd
折疊的打開和關(guān)閉
zo
openzc
close:set foldlevel=1
設(shè)置折疊層次這個(gè)縮進(jìn)折疊可以對(duì)于程序文件使用么???
下次再說!
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[藍(lán)橋?qū)嶒?yàn)樓 邀請(qǐng)碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)