天天看點

Vim技能修煉教程(11) - 代碼折疊代碼折疊

上一講我們是程式員篇的第一講,關于代碼跳轉。代碼跳轉是一個付出很少收獲很大的功能。這一節我們開始一個收獲很多,但是付出也相對多一點功能:代碼折疊。

折疊有下面幾種類型:

Manual: 手動建立折疊。但是退出vim後就一切都沒了。

Marker: 基于特定的字元組合進行折疊。

Expr: 定義正規表達式來處理折疊,這是最終的解決方案。

Indent: 這個最簡單也最基本,根據縮進來折疊。

Syntax: 根據程式語義進行折疊。

我們先看一個例子,左邊是采用syntax方式進行折疊的,右邊是采用indent方式。

Vim技能修煉教程(11) - 代碼折疊代碼折疊

從上面的例子可以看到,折疊方式的屬性是跟視窗相關的,每個視窗都設定不同的折疊方式。

設定折疊的方式,是通過設定foldmethod屬性來實作的,例:

折疊指令都是以z字開頭的,對于中國人最友好了,就是折字的拼音首字母麼。

最重要的折疊指令就是za,切換折疊狀态。

za: 切換折疊狀态

zA: 遞歸切換折疊狀态

zo: 打開一個折疊

zc: 關閉一個折疊

zj: 移動到下一個折疊

zk: 移動到上一個折疊

我們可以通過zf指令手動建立折疊。比如上圖中,Pseudo code for int 21那一段我們看着不爽,想把它折疊起來。

我們先切折疊模式:

然後移動到Pseudo那一行,輸入建立指令:

zf是建立折疊指令,後面接指令的範圍,我們要建立這5行的折疊,是以我們用4j向下移動4行。

最後,在這5行上試試zc指令吧,就是下面這個效果:

Vim技能修煉教程(11) - 代碼折疊代碼折疊

我們如果可以數出來有幾行的話,可以使用zF指令來建立,例:

上面就建立5行的折疊。

vim雖然功能很全,但是不可能支援每一種我們想要的格式。我們還是需要寫腳本來實作自己的折疊方式的。不過我們還沒有學習vimscript的基礎,這一部分後面我們再補課。

繼續閱讀