閱讀414 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

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

代碼折疊

折疊的類型

折疊有下麵幾種類型:

  • Manual: 手動創建折疊。但是退出vim後就一切都沒了。
  • Marker: 基於特定的字符組合進行折疊。
  • Expr: 定義正則表達式來處理折疊,這是最終的解決方案。
  • Indent: 這個最簡單也最基本,根據縮進來折疊。
  • Syntax: 根據程序語義進行折疊。

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

fold

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

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

:set foldmethod=indent
:set foldmehtod=syntax

折疊操作命令速成

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

最重要的折疊命令就是za,切換折疊狀態。

  • za: 切換折疊狀態
  • zA: 遞歸切換折疊狀態
  • zo: 打開一個折疊
  • zc: 關閉一個折疊
  • zj: 移動到下一個折疊
  • zk: 移動到上一個折疊

手動模式

我們可以通過zf命令手動創建折疊。比如上圖中,Pseudo code for int 21那一段我們看著不爽,想把它折疊起來。
我們先切折疊模式:

:set foldmethod=manual

然後移動到Pseudo那一行,輸入創建命令:

zf4j

zf是創建折疊命令,後麵接命令的範圍,我們要創建這5行的折疊,所以我們用4j向下移動4行。

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

手動折疊

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

5zF

上麵就創建5行的折疊。

未盡事宜

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

最後更新:2017-07-13 13:02:15

  上一篇:go  TensorFlow在iOS和Mac上的使用
  下一篇:go  ubuntu maven