Vim 摺疊篇


建立時間: 2024年4月8日 08:33
更新時間: 2024年11月12日 08:53

說明

本篇將記錄有關 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 設為 manualmarker 時有效。

manual 方式,新建的摺疊會關閉。同時 foldenable 會被設定。


[count]zF

[count] 行建立摺疊。其餘同 zf


:{range}fo[ld]

{range} 內的行建立摺疊。其餘同 zf


zd

刪除 (delete) 在遊標下的摺疊。當遊標在被摺疊的行上,該摺疊被刪除。巢狀的摺疊上移一級。在可視模式下所選區域 (部分) 涵蓋的一層摺疊被刪除。

僅當 foldmethod 設為 manualmarker 時有效。

小心: 這很容易比你想像地要刪得多,手動摺疊不能撤銷。


zD

循環刪除 (Delete) 遊標下的摺疊。在可視模式下所選區域 (部分) 涵蓋的摺疊和巢狀的摺疊都被刪除。

僅當 foldmethod 設為 manualmarker 時有效。


zE

除去 (Eliminate) 視窗裡所有的摺疊。

僅當 foldmethod 設為 manualmarker 時有效。


打開和關閉摺疊

[count]zo

打開 (open) 在遊標下的摺疊。當給定計數時,相應深度的摺疊被打開。在可視模式下,所選區域的所有行的摺疊被打開一級。


zO

循環打開 (Open) 遊標下的摺疊。不在遊標下的摺疊不改變。

在可視模式下,打開所有的在選取區域裡的摺疊,包括被部分選取的。


[count]zc

關閉 (close) 在遊標下的摺疊。當給定計數時,相應深度的摺疊被關閉。在可視模式下,所選區域裡的所有行的摺疊被關閉一級。foldenable 被設定。


zC

循環關閉 (Close) 在遊標下的所有摺摺疊。不在遊標下的摺疊不改變。

在可視模式下,關閉所有的在選取區域的摺疊,包括被部分選取的。

foldenable 被設定。


[count]za

當遊標位於一關閉的摺疊上時,打開之。當摺疊巢狀時,你可能需要使用 za 數次。當給定計數時,打開相應數量的被關閉的摺疊。

當遊標位於一打開的摺疊上時,關閉之且設定 foldenable。這僅關閉一級摺疊,因為再次使用 za 將再次打開摺疊。當給定計數時,關閉相應數量的摺疊 (這不同於重複 za 許多次)。


zA

當處在一關閉的摺疊上時,循環地打開摺疊。

當處在一打開的摺疊上時,循環地關閉摺疊且設定 foldenable


[count]zm

摺起更多 (more): foldlevelv:count1。如果 foldlevel 已經為 0,則不會被減少。

foldenable 被設定。

備註

上述為官方文件說明,但我測試後發現功能與 v:count1 描述不匹配,比較像常用的 [count],預設值是1。


zM

關閉所有摺疊: foldlevel 設為 0。

foldenable 被設定。


[count]zr

減少 (reduce) 摺疊: foldlevelv: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 後使用。


觀看次數: 539
摺疊fold
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!