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
後使用。
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!