整合終端機
VMark 內建終端機面板,讓你無需離開編輯器即可執行指令。
按 Ctrl + ` 顯示或隱藏終端機面板。開啟時游標會進入 shell,關閉時游標會回到編輯器——因此不必動用滑鼠就能進出面板。
若要在編輯器與已開啟的終端機之間切換而不隱藏面板,請按 Ctrl + Shift + `(聚焦終端機或編輯器;Windows 與 Linux 上為 Alt + Shift + `)。它可雙向切換,且絕不改變面板的顯示狀態——如果終端機剛好是隱藏的,它會將其開啟,而不是什麼都不做。
工作階段
終端機最多支援 5 個同時進行的工作階段,每個工作階段有獨立的 shell 程序。右側的垂直標籤列顯示編號工作階段標籤。
| 操作 | 方式 |
|---|---|
| 新增工作階段 | 點擊 + 按鈕 |
| 切換工作階段 | 點擊標籤編號 |
| 關閉工作階段 | 點擊垃圾桶圖示 |
| 重新啟動 shell | 點擊重新啟動圖示 |
| 重新命名工作階段 | 雙擊標籤,輸入名稱,按 Enter(Escape 取消) |
| 交換面板位置 | 點擊交換圖示(↕ / ↔),將終端機移到目前軸向的另一端。在 自動 模式下仍保留依長寬比的智慧切換(橫向 → 側邊,直向 → 底部/頂部)——只是改選另一端。 |
| 最大化面板 | 雙擊調整大小的控制點;再次雙擊即可還原 |
關閉最後一個工作階段時,面板會隱藏,但工作階段依然存活——用 Ctrl + ` 重新開啟,即可回到原來的狀態。shell 正常退出(exit 或 Ctrl + D)時,對應分頁會自動關閉——若是最後一個分頁,面板也會隨之隱藏。若 shell 因錯誤退出,分頁會保持開啟並顯示退出代碼,按任意鍵即可重新啟動。
關閉工作階段——無論是點擊垃圾桶圖示、關閉其所在視窗,或結束 VMark——都會結束在其中啟動的所有程式,而不只是 shell。VMark 會向 shell 的整個程序群組傳送掛斷訊號(SIGHUP),最多等待一秒讓它結束,然後強制終止(SIGKILL)剩下的程序。你刻意分離到獨立程序群組的工作(例如使用 nohup 或 setsid)不受影響。在 Windows 上沒有掛斷這一步:shell 會立即被結束。
**通知:**當某個終端機響鈴(例如 Claude Code 完成一輪)而該 VMark 視窗未取得焦點時,VMark 會發出一則系統通知,標明該視窗的文件——因此你可以在多個視窗中執行 Claude Code,哪個需要你就收到哪個的提醒,而不必逐一盯著。可透過 設定 → 終端機 → 未聚焦時通知 切換(預設開啟;首次使用時會請求通知權限)。同樣的未聚焦響鈴訊號也會在視窗狀態面板中標記該視窗,讓你看出哪個視窗需要你,並直接跳過去。
每個標籤會反映正在執行程式的標題(由會輸出終端機標題的工具設定,例如 vim 或 ssh),除非你曾手動重新命名該工作階段——手動命名永遠優先。要重新命名,請雙擊標籤:Enter 確認,Escape 捨棄,點擊其他地方則保留已輸入的內容。空白名稱會被忽略。
**最大化:**面板大小上限為可用空間的 80 %,讓編輯器始終可以觸及;雙擊調整大小的控制點會讓面板直接貼齊這個上限。再次雙擊會回到你儲存的大小。這只是檢視切換——絕不會改變你設定的大小。
**在此開啟終端機:**在檔案總管中對任何資料夾按右鍵並選擇 在此開啟終端機,即可在該目錄啟動工作階段。無論其他工作階段位於何處,新的工作階段都會在該目錄開啟。已有五個工作階段時,此項目會變成灰色。
終端機工作階段與工作區導軌
啟用工作區導軌後,導軌上的每個工作區都擁有自己的一組終端機工作階段。切換工作區會替換可見的終端機標籤——被隱藏工作區的 shell 會原封不動地保留:仍在執行、工作目錄不變、也不會有任何內容被輸入。切換回來時會再次顯示同樣的 shell,而且每個工作區都會記住你原本正在看的工作階段。
- 新的工作階段屬於建立時作用中的工作區,並從該工作區的根目錄啟動。
- 5 個工作階段的上限與
Terminal 1…5編號只適用於可見的那一組——隱藏工作區的工作階段不會佔用作用中工作區的額度。 - 在沒有任何工作階段的工作區上開啟面板時,會自動在那裡建立一個;若沒有工作區(或沒有可作為目錄依據的已儲存檔案),面板會改為顯示提示。
- 從導軌關閉工作區,或將它移到獨立視窗時,會一併關閉其終端機工作階段。
- 導軌關閉時,一切行為照舊:整個視窗共用一組工作階段,其中閒置的 shell 會隨工作區切換執行
cd。
鍵盤快捷鍵
以下快捷鍵在終端機面板取得焦點時有效:
| 操作 | 快捷鍵 |
|---|---|
| 複製 | Mod + C(有選取範圍時) |
| 貼上 | Mod + V |
| 清除 | Mod + K |
| 搜尋 | Mod + F |
| 移至行首 / 行尾 | Cmd + ← / Cmd + →(macOS) |
| 刪除整行 | Cmd + ⌫(macOS) |
| 縮放終端機字型 | Mod + = / Mod + - / Mod + 0 |
| 選取全部終端機輸出 | Mod + A |
| 切換到工作階段 1 … 5 | Mod + 1 … Mod + 5 |
| 切換終端機 | Ctrl + ` |
| 聚焦終端機或編輯器 | Ctrl + Shift + ` |
| 上一個指令提示字元 | Mod + ↑ |
| 下一個指令提示字元 | Mod + ↓ |
終端機取得焦點時,Mod + = / - / 0 縮放的是終端機字型(在終端機設定中另行設定),而非編輯器字型;Mod + F 開啟的是終端機搜尋,而非編輯器的尋找列。
提示字元導覽(Mod + ↑ / Mod + ↓)需要 shell 整合——請見下方的 Shell 整合。
Linux: Ctrl + 字母會交給 shell,因此 Ctrl + A、Ctrl + E、Ctrl + K、Ctrl + F、Ctrl + U、Ctrl + W 等 readline 按鍵與其他 Linux 終端機一樣可用。終端機本身的字母快捷鍵改為 Ctrl + Shift:Ctrl + Shift + F 搜尋,Ctrl + Shift + K 清除畫面,Ctrl + Shift + A 全選,Ctrl + Shift + C / Ctrl + Shift + V 複製和貼上。Ctrl + C 仍會複製選取內容(無選取時傳送 SIGINT),Ctrl + V 仍會貼上;Ctrl + Insert / Shift + Insert 同樣可以複製和貼上。
TIP
Mod + C 在沒有選取範圍時,會向正在執行的程序傳送 SIGINT——與在一般終端機中按 Ctrl+C 相同。
邊看歷史邊輸入
向上捲動查看先前的輸出時可以繼續打字:視口停在原處,終端底部會浮出一條浮動輸入行,即時顯示你正在輸入的那幾行——shell 提示字元,或 Claude Code 等 TUI 的輸入框。按鍵仍然送給 shell,所以 Tab 補全、歷史紀錄和輸入法照常可用。點擊它右端的箭頭可跳回輸入行;輸入行回到視野後它會自動消失。按 Enter 或 Ctrl+C 時也會跳回輸入行,讓你看到指令(或送給 TUI 的提示)接下來的輸出;其他按鍵(包括 Shift+Enter)都不會移動視口。全螢幕程式(vim、less)沒有捲動歷史,因此不會出現。
搜尋
按 Mod + F 開啟搜尋列。輸入內容可在終端機緩衝區中漸進式搜尋。
| 操作 | 快捷鍵 |
|---|---|
| 下一個符合項目 | Enter |
| 上一個符合項目 | Shift + Enter |
| 關閉搜尋 | Escape |
搜尋列會在輸入框旁回報搜尋結果:
3 / 17——你位於十七個符合項目中的第三個。5000 處符合——符合項目太多,終端機無法追蹤目前是哪一個,因此只回報總數而不顯示位置。- 沒有結果——查詢沒有符合任何內容;輸入的文字也會變成紅色。
輸入框與箭頭之間有三個切換鈕:
| 切換鈕 | 效果 |
|---|---|
| Aa | 區分大小寫 |
| ab | 全字符合 |
| .* | 將查詢視為正規表示式 |
在正規表示式模式下,輸入到一半的模式(例如正要輸入 [a-z] 時的 [)只會回報沒有結果,而不會出錯——繼續輸入即可。每次關閉搜尋列或切換工作階段時,這些切換鈕都會重設。
右鍵選單
在終端機內按右鍵可存取:
- 複製——複製選取的文字(未選取時停用)
- 複製(合併折行)——複製選取內容,並移除依顯示寬度產生的換行。有些命令列程式(codex 及其他 TUI 應用程式)會插入真正的換行字元,將輸出硬折行至終端機寬度;一般複製會保留這些換行。「複製(合併折行)」會把折行重新接回連續的段落(空白行仍保留為段落分隔)。它能辨識中日韓文字——中文/日文接合時不會插入空格。請選取你確定屬於同一段邏輯內容的區塊,因為 VMark 無法分辨折行產生的換行與刻意的換行。
- 貼上——從剪貼簿貼上至 shell
- 全選——選取整個終端機緩衝區
- 清空——清除可見輸出
- 重設顯示——重新繪製終端機並重置其渲染快取。如果在長時間工作階段後字元開始重疊、大小寫混雜或顯示亂碼(最常見於長時間執行重度樣式 CLI,例如 Claude Code),可使用此項。同一視窗中的終端機共用一個字形快取,因此這會重新繪製視窗中的所有終端機,而不只是作用中的分頁。
- 複製命令輸出——複製某個指令輸出的全部內容,不含其提示字元行,也不含下一個指令的輸出。只有在你於某個指令的輸出範圍內按右鍵、且 shell 整合 已開啟時才會出現,因為 VMark 正是靠它得知每個指令從哪裡開始、在哪裡結束。
此選單完全可用鍵盤操作:開啟時焦點位於第一個可用的動作,方向鍵在項目間移動(會跳過停用的項目),Home/End 跳至第一個/最後一個,Enter 或空白鍵執行,Escape 或 Tab 關閉。
執行程式碼區塊
將滑鼠移到文件中任何 bash、sh、zsh 或 shell 程式碼區塊——或標記為 console、shell-session、shellsession 或 terminal 的對話紀錄區塊——複製按鈕旁就會出現 ▶ 在終端機中執行 按鈕。它會把區塊內容貼到終端機——必要時顯示面板並啟動工作階段——然後就此停止。
它只貼上,不會執行
指令會被放到 shell 的輸入行上,絕不會替你執行:不會附加換行,因此在你按下 Enter 之前什麼都不會發生。請先讀一遍貼上的內容——文件可能來自任何地方,而程式碼區塊只是某人寫下的文字。
對於對話紀錄區塊(console、shell-session、shellsession、terminal)——也就是貼上的終端機工作階段——開頭的 $ 、% 與 # 提示字元會被移除,讓你得到的是指令而不是提示字元。在 bash 區塊中則保留原樣,因為在那裡它們是原始碼。
可點擊連結
終端機可偵測指令輸出中的三種連結:
- 網頁 URL——點擊以在預設瀏覽器中開啟
- OSC 8 超連結——由
ls --hyperlink=auto、gh及現代編譯器等工具輸出的明確終端機超連結。可見文字與實際 URL 可能不同;點擊會開啟該 URL。 - 檔案路徑——包含
/並以副檔名結尾的路徑;點擊以在編輯器中開啟檔案(支援:line:col後綴;當 shell 整合 回報 shell 的目前目錄時,相對路徑會依該目錄解析,否則依工作區根目錄解析)
Shell 環境
VMark 在每個終端機工作階段中設定以下環境變數:
| 變數 | 值 |
|---|---|
TERM | xterm-256color |
TERM_PROGRAM | WezTerm |
TERM_PROGRAM_VERSION | 20240203-110809-5046fc22 |
VMARK_WORKSPACE | 工作區根目錄路徑(開啟資料夾時) |
PATH | 完整登入 shell PATH(與系統終端機相同) |
COLORTERM | truecolor |
LC_CTYPE | UTF-8——僅限 macOS |
TERM_PROGRAM 回報的是 WezTerm 而非 vmark,這是刻意的。有些 CLI 工具——包括 Claude Code 的 /terminal-setup——只對寫死在允許清單上的終端機啟用 CSI u 按鍵編碼,對其他終端機則退回功能受限的「未知終端機」路徑。VMark 支援該協定,因此它以行為最接近的允許清單終端機身分自稱。若將此值改為 vmark,會在這些工具中悄悄破壞 Shift+Enter 及其他帶修飾鍵的按鍵序列。請見 ADR-006。
LC_CTYPE=UTF-8 僅在 macOS 上設定。從 Dock 或 Spotlight 啟動的 GUI 應用程式在那裡幾乎不繼承任何環境變數,若沒有它,shell 會退回 C locale,工具會將中日韓文字印成 ?。單純的名稱 UTF-8 在 macOS 上是一個 locale,在 Linux 上卻不是,因此在 Linux 上設定它,會把原本繼承到的正常 locale 換成無效的——每個呼叫 setlocale() 的程式都會發出警告。在 Linux 與 Windows 上,會原封不動地繼承你桌面工作階段自己的 LANG / LC_*。
VMark 刻意不設定 EDITOR。git commit、crontab -e 等會啟動的是你自己的 $EDITOR——也就是你的 shell 設定所匯出的值。(VMark 過去曾強制設定 EDITOR=vmark,但 vmark 命令列墊片是選用的,而且會立即返回,不會等你關閉分頁,因此 git commit 不是報「找不到指令」,就是得到空白的提交訊息。要讓它正常運作,需要一個會阻塞等待的 vmark --wait 協定,而它尚未實作。)
整合終端機繼承你登入 shell 的 PATH,因此 node、claude 等 CLI 工具和其他使用者安裝的二進位程式均可被發現——就像在一般終端機視窗中一樣。
除非你在終端機設定中選擇了 shell,否則 VMark 會啟動你的登入 shell。你選擇的 shell 必須是 VMark 提供的選項——在 macOS 與 Linux 上,是列於 /etc/shells 中(或你的登入 shell)、確實存在且可執行的 shell;在 Windows 上,則是 PowerShell、pwsh、cmd.exe 或 %COMSPEC%——並以絕對路徑指定。已儲存但不再可用的選擇會在設定中顯示為 (無法使用),VMark 則會改為啟動你的預設 shell。在 macOS 和 Linux 上,會先從你的使用者帳戶項目讀取登入 shell,其次是 $SHELL,後備為 /bin/sh。在 Windows 上會使用 %COMSPEC%,後備為 cmd.exe 的完整路徑。工作目錄從工作區根目錄、活躍檔案的上層目錄或 $HOME 開始。
當終端機取得焦點時,標準 shell 快捷鍵如 Ctrl+R(zsh/bash 的反向歷史搜尋)均可正常使用——不會被編輯器攔截。
若終端機已在執行時工作區根目錄發生變更,閒置的工作階段會自動 cd 至新的根目錄。正在執行指令(例如 vim 或 less)的工作階段不會被中斷:它會在指令結束後才切換目錄,這需要 shell 整合 才能偵測。開啟工作區導軌後,屬於某個工作區的工作階段會保留自己的目錄。
macOS 上的麥克風、相機與 Apple 事件
在整合式終端機中執行的程式可以要求使用麥克風、相機,或控制其他 App 的權限(Apple 事件,osascript 會用到)。macOS 會以 VMark 的名義詢問,因為它把 VMark 視為終端機所啟動的一切程式的負責 App。macOS 詢問時請選擇允許;之後可以在系統設定 → 隱私權與安全性的麥克風、相機或自動化中變更。要求發生在程式首次使用該資源時,而不是開啟終端機時。
如果程式錄到的是靜音、拍到的是黑畫面,或回報「未授權」錯誤,而且沒有出現提示,請在對應的設定頁面中檢查 VMark 是否在列表中並已允許。回報問題時,請附上該程式的輸出。
對於 BlackHole 這類虛擬音訊輸入,僅有權限並不能完成音訊路由。請在錄音工具中選擇目標輸入、把音訊路由到該輸入,並先驗證一段短錄音再開始長時間錄製:音訊檔案在變大,本身並不能證明錄到了聲音。VMark 不包含錄音或轉寫工具;這些指令來自你另行安裝的工具。
尚未實作
以下項目已列入追蹤,但目前尚未提供。之所以列在這裡,是因為本頁的早期版本曾把其中幾項描述得好像已經可用:
- 暫停 / 繼續工作階段。 VMark 可以在內部暫停 shell 程序——當輸出速度快過終端機的算繪速度時,它會自動以此作為流量控制——但沒有提供給使用者的控制項,也沒有可以放置此控制項的工作階段標籤右鍵選單。
- 會阻塞等待的
vmark --wait,讓$EDITOR可以指向 VMark(請見上方的 Shell 環境)。 - 跨重新啟動保留回捲緩衝區(請見持久性)。
- fish shell 整合(請見 Shell 整合)。
設定
開啟 設定 → 終端機 進行設定:
| 設定 | 範圍 | 預設值 | 平台 |
|---|---|---|---|
| 面板大小 | 可用空間的 10 % – 80 %,每級 5 % | 40 % | 全部 |
| 字型大小 | 10 – 24 px | 13 px | 全部 |
| 行高 | 1.0 – 2.0 | 1.2 | 全部 |
| 選取即複製 | 開/關 | 關 | 全部 |
| 自動渲染對話記錄 | 開/關 | 關 | 全部 |
| 將 Option 作為 Meta 鍵 | 開/關 | 開 | macOS |
| Shell 整合 | 開/關 | 開 | macOS / Linux(zsh、bash) |
| 遠端剪貼簿(OSC 52) | 開/關 | 開 | 全部 |
| 回捲緩衝區 | 1,000 / 5,000 / 10,000 / 50,000 行 | 5,000 | 全部 |
| 螢幕閱讀器模式 | 開/關 | 關 | 全部 |
自動渲染對話記錄
啟用 自動渲染對話記錄 後,助理回覆中的 Markdown、可選取的表格和 Mermaid 圖表會顯示在終端機區域內的渲染對話記錄區。終端機位於頂部或底部時,此區位於 CLI 右側;終端機位於左側或右側時,此區位於 CLI 下方;互動式 CLI 在旁邊始終可用。
此區預設為收合。當新回覆包含表格或 Mermaid 圖表時,它會自動展開——純文字回覆本來就能在終端機中清楚顯示,不會使其展開。隨時按一下終端機標籤列中的圖表按鈕(工具提示為 渲染後的對話記錄)即可顯示或隱藏此區;顯示對話記錄時按鈕會醒目提示,隱藏後 CLI 會重新佔滿整個區域;手動收合後,它會保持關閉,直到下一則包含表格或圖表的回覆出現。首次顯示工作階段時對話記錄中已有的內容不會使其展開。隱藏的終端機會停止讀取對話記錄。
啟用時,VMark 會在 Claude Code 的 settings.json 與 Codex 的 hooks.json 中新增一個本機 SessionStart 鉤子,並保留既有的鉤子。啟用後,請在 VMark 終端機中啟動或恢復 Claude/Codex;已在執行的工作階段需要重新啟動。Codex 首次執行時可能會要求你信任這個新鉤子。需要安裝 Node,且 CLI 版本須支援生命週期鉤子。被明確停用或受政策限制的鉤子、遠端 SSH 工作階段,以及與 VMark 環境不同的自訂 CLI 設定目錄,都無法建立繫結。
每個終端機都會追蹤其對應的確切工作階段,而不是最近修改的那份對話記錄。預覽最多保留對話記錄資料最後 2 MiB 中的 100 則助理訊息。原始 HTML 與遠端圖片保持惰性,不會生效;無效的圖表仍可作為原始碼閱讀。停用後會移除渲染區域,並停用 VMark 安裝的鉤子。
無障礙
| 設定 | 選項 | 預設值 |
|---|---|---|
| 終端機提示音 | 關閉 / 視覺 / 聲音 | 視覺 |
| 最低對比度 | 關閉 / WCAG AA 級(4.5:1) / WCAG AAA 級(7:1) / 最大 | WCAG AA 級(4.5:1) |
大多數變更會立即套用至所有開啟的工作階段——面板大小與位置、字型大小、行高、游標、選取即複製、將 Option 作為 Meta 鍵、回捲緩衝區、螢幕閱讀器模式、終端機提示音與最低對比度。Shell、WebGL 渲染器(Linux 上無法使用)、遠端剪貼簿與 Shell 整合在工作階段啟動時即已固定,因此只會套用至之後開啟的工作階段。面板大小最多可達可用空間的 80 %。編輯器會保留以像素計算的最小尺寸,因此無論終端機多大,編輯器都不會完全消失。雙擊調整大小的控制點可直接跳到最大值並再跳回來,不會改變儲存的大小。將 Option 作為 Meta 鍵會在整合終端機中將 macOS Option 鍵作為 Meta 路由,讓 emacs、tmux 等工具能看到 Alt 前綴的快捷鍵(僅限 macOS);此選項預設開啟,因此 Option+方向鍵會按詞移動,而不是輸入重音字元。Shell 整合適用於 macOS 與 Linux(在 Windows 上隱藏)。遠端剪貼簿只允許寫入(讀取一律被拒絕),詳見下文。回捲緩衝區控制每個工作階段在捲動歷史中保留多少行輸出——數值越大佔用記憶體越多。螢幕閱讀器模式會將終端機輸出提供給 VoiceOver 等輔助技術;基於效能考量預設關閉。終端機提示音選擇提示音(BEL)的呈現方式——在工作階段標籤上顯示視覺化的背景活動標記、發出輕柔的嗶聲(同時也會標記背景工作階段的標籤,方便你找到它),或完全不提示。最低對比度會將過淡的終端機文字提升到與背景之間可讀的對比度;為了無障礙可調高此值,或設為「關閉」以停用提升。
終端機字型
終端機使用 設定 → 編輯器 中的 等寬字型,而不是自己的字型,因此在那裡變更字型會同時改變程式碼區塊、原始碼模式與終端機的樣式。在 Linux 上,「系統預設」選項會跟隨桌面環境本身的等寬字型,也就是系統終端機所用的字型。
字型大小與縮放
終端機的字型大小刻意獨立於編輯器的閱讀字型大小:終端機是密集的監看介面,其 13 px 預設值與獨立終端機的出廠設定一致,而非 18 px 的閱讀預設值。Mod + = / Mod + - 每次縮放 2 px,因此終端機字型可能落在下拉選單未列出的數值上(13 → 15 → 17 …)。下拉選單會顯示實際生效的大小,並把縮放後的數值加入清單,而不是把你拉回某個預設值。
遠端剪貼簿(OSC 52)
在 ssh 工作階段、tmux 或遠端編輯器中複製時,文字會進到你的剪貼簿——而不是遠端機器的。程式透過輸出 OSC 52 跳脫序列來請求此功能;VMark 會將其導向系統剪貼簿。
# 在終端機可以輸出的任何地方 — 包括透過 ssh:
printf '\e]52;c;%s\a' "$(printf 'hello' | base64)"僅限寫入——讀取一律被拒絕
OSC 52 也定義了讀取剪貼簿的方法,而 VMark 絕不回應,即使此設定已開啟也一樣。任何能向你的終端機輸出位元組的程序都可以發出讀取請求——包括對一個不是你寫的檔案執行 cat——而回覆會像是你自己輸入的一樣出現。iTerm2 與 VS Code 基於同樣的理由拒絕讀取。此設定控制的是寫入;讀取則無條件拒絕。
關閉 設定 → 終端機 → 遠端剪貼簿 即可完全關閉此通道。變更會套用至新產生的工作階段。
Shell 整合
Shell 整合開啟時,VMark 會在 shell 中注入輕量的指令標記,讓終端機了解每個指令從哪裡開始、在哪裡結束。它可以啟用:
- 提示字元導覽——
Cmd + ↑/Cmd + ↓跳至回捲緩衝區中上一個 / 下一個指令提示字元。 - 結束狀態標示——以細長的邊欄色條將每個指令行標示為綠色(成功)或紅色(失敗)。
- 即時追蹤工作目錄——輸出中的相對檔案路徑會依 shell 的目前目錄解析,新的終端機也會在那裡開啟。
支援 zsh 與 bash,適用於 macOS 與 Linux。兩者的注入都是非破壞性的——會先載入你真正的設定檔,VMark 的掛鉤是附加上去而非取代,因此你的提示字元、主題與別名都不受影響。
| Shell | VMark 掛入的方式 | 保留的內容 |
|---|---|---|
| zsh | ZDOTDIR 指向一個產生的 .zshrc,它會先載入你的設定,再以 add-zsh-hook 註冊掛鉤 | 會尊重自訂的 $ZDOTDIR:VMark 會從登入 shell 解析出你真正的 $ZDOTDIR,並從那裡載入 .zshenv 與 .zshrc,而不只是 $HOME |
| bash | bash --rcfile <generated>,會先載入 ~/.bashrc | 既有的 PROMPT_COMMAND 與既有的 DEBUG trap 都會被組合而非取代——因此 bash-preexec、direnv 與 atuin 仍可正常運作 |
由於終端機執行的是互動式非登入 shell,兩種 shell 都不會載入僅供登入使用的檔案(.zprofile、.bash_profile、.profile),這與一般終端機分頁的行為一致。
fish 尚未整合;它可正常執行,只是沒有這些功能。關閉此設定即可完全停用注入。變更會套用至新產生的工作階段(重新啟動終端機即可套用)。
持久性
終端機面板是否開啟會在熱退出重新啟動後儲存和還原。它的大小就是面板大小設定——視窗中的一個比例,拖曳調整大小的控制點時會隨之更新——因此會與你的設定一起保存,無論面板位於哪一側,每次重新啟動後都會保留。Shell 程序本身無法保留——每個工作階段在重新啟動時都會產生全新的 shell。回捲緩衝區同樣不會保留:還原它意味著要把經過終端機的所有內容(包括 API 金鑰)寫入磁碟,因此刻意保留給能先解決此問題的設計。