Vim 摺疊篇
分類
說明
本篇將記錄有關 Vim 摺疊操作相關的內容。
設定選項
foldenable
fen
布林型 (預設開啟)
區域於視窗
{僅當編譯時加入 +folding 特性才有效}
如果關閉,所有的摺疊都被打開。此選項用於在文字顯示的完全打開摺疊和保留摺疊之間 (包括手動開啟或關閉的摺疊) 快速切換。
foldlevel
fdl
數值型 (預設: 0)
區域於視窗
{僅當編譯時加入 +folding 特性才有效}
設定摺疊等級: 高於此等級的摺疊會被關閉。
設定此選項為零關閉所有的摺疊。更高的數字關閉更少的摺疊。
foldmethod
fdm
字串 (預設: “manual”)
區域於視窗
{僅當編譯時加入 +folding 特性才有效}
目前視窗使用的摺疊方式。可能的值是:
| 關鍵字 | 方法 | 說明 |
|---|---|---|
fold-manual |
manual | 手動建立摺疊。 |
fold-indent |
indent | 相同縮進距離的行構成摺疊。 |
fold-expr |
expr | foldexpr 給出每行的摺疊等級。 |
fold-marker |
marker | 標誌用於指定摺疊。 |
fold-syntax |
syntax | 語法高亮項目指定摺疊。 |
fold-diff |
diff | 沒有改變的文字構成摺疊。 |
摺疊命令
所有的摺疊命令用 “z” 開頭。提示: 如果你從側面看 “z” 像一張疊起來的紙。
創建和刪除摺疊
zf{motion}
{Visual}zf
建立摺疊運算子。
僅當 foldmethod 設為 manual 或 marker 時有效。
用 manual 方式,新建的摺疊會關閉。同時 foldenable 會被設定。
[count]zF
對 [count] 行建立摺疊。其餘同 zf。
:{range}fo[ld]
對 {range} 內的行建立摺疊。其餘同 zf。
zd
刪除 (delete) 在遊標下的摺疊。當遊標在被摺疊的行上,該摺疊被刪除。巢狀的摺疊上移一級。在可視模式下所選區域 (部分) 涵蓋的一層摺疊被刪除。
僅當 foldmethod 設為 manual 或 marker 時有效。
小心: 這很容易比你想像地要刪得多,手動摺疊不能撤銷。
zD
循環刪除 (Delete) 遊標下的摺疊。在可視模式下所選區域 (部分) 涵蓋的摺疊和巢狀的摺疊都被刪除。
僅當 foldmethod 設為 manual 或 marker 時有效。
zE
除去 (Eliminate) 視窗裡所有的摺疊。
僅當 foldmethod 設為 manual 或 marker 時有效。
打開和關閉摺疊
[count]zo
打開 (open) 在遊標下的摺疊。當給定計數時,相應深度的摺疊被打開。在可視模式下,所選區域的所有行的摺疊被打開一級。
zO
循環打開 (Open) 遊標下的摺疊。不在遊標下的摺疊不改變。
在可視模式下,打開所有的在選取區域裡的摺疊,包括被部分選取的。
[count]zc
關閉 (close) 在遊標下的摺疊。當給定計數時,相應深度的摺疊被關閉。在可視模式下,所選區域裡的所有行的摺疊被關閉一級。foldenable 被設定。
zC
循環關閉 (Close) 在遊標下的所有摺摺疊。不在遊標下的摺疊不改變。
在可視模式下,關閉所有的在選取區域的摺疊,包括被部分選取的。
foldenable 被設定。
[count]za
當遊標位於一關閉的摺疊上時,打開之。當摺疊巢狀時,你可能需要使用 za 數次。當給定計數時,打開相應數量的被關閉的摺疊。
當遊標位於一打開的摺疊上時,關閉之且設定 foldenable。這僅關閉一級摺疊,因為再次使用 za 將再次打開摺疊。當給定計數時,關閉相應數量的摺疊 (這不同於重複 za 許多次)。
zA
當處在一關閉的摺疊上時,循環地打開摺疊。
當處在一打開的摺疊上時,循環地關閉摺疊且設定 foldenable。
[count]zm
摺起更多 (more): foldlevel 減 v:count1。如果 foldlevel 已經為 0,則不會被減少。
foldenable 被設定。
備註
上述為官方文件說明,但我測試後發現功能與 v:count1 描述不匹配,比較像常用的 [count],預設值是1。
zM
關閉所有摺疊: foldlevel 設為 0。
foldenable 被設定。
[count]zr
減少 (reduce) 摺疊: foldlevel 加 v:count1。
備註
上述為官方文件說明,但我測試後發現功能與 v:count1 描述不匹配,比較像常用的 [count],預設值是1。
zR
打開所有的摺疊。 foldlevel 設為最高等級。
:{range}foldo[pen][!]
在 {range} 內打開摺疊。當加上 [!] 時,所有層級的摺疊都被打開。對查看在 {range} 內的所有文本很有用。沒有 [!] 時,打開一級摺疊。
:{range}foldc[lose][!]
在 {range} 內關閉摺疊。當加上 [!] 時,所有層級的摺疊都被關閉。對隱藏在 {range} 內的所有文本很有用。沒有 [!] 時,關閉一級摺疊。
zn
不摺疊 (none): 重置 foldenable。所有的摺疊被打開。
zN
正常摺疊 (normal): 設定 foldenable。所有的摺疊都展現它們之前的樣子。
zi
翻轉 foldenable 的值。
在摺疊間移動
[count]zj
向下移動。到達下一個摺疊的開始處。關閉的摺疊也被計入。
當給定計數,重複此指令 [count] 次。
此命令可在 operator 後使用。
[count]zk
向上移動到前一摺疊的結束處。關閉的摺疊也被計入。
當給定計數,重複此指令 [count] 次。
此命令可在 operator 後使用。
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!