zshell

終端機本身

Zshell 的終端機後端、shell 環境、鏈接處理、通知與安全功能。

每個終端機窗格都執行你真正的登錄 shell,並使用兩個原生 GPU 加速後端之一。窗格焦點、搜尋、通知、鏈接、歷史、主題和貼上安全由 Zshell 統一管理,所以無論選哪個模擬器,外圍行為都一致。

終端機後端

在 設定 → Terminal → Backend 裡選擇:

後端說明
Ghostty預設選項
Alacritty通常佔用更少記憶體

兩者都支持 GPU 加速、圖片渲染、Zshell 的共享主題目錄、查找、滑鼠上報、通知和進度。後端改動只影響之後新建的終端機;已有窗格繼續使用啟動時的模擬器。

你的 shell,原封不動

每個工作階段啟動你帳戶的登錄 shell,所以提示符、別名、函式和 dotfiles 都和其他終端機裡一樣載入。 Zshell 額外設定了能力與身份變數:

變數值
TERM_PROGRAMghostty
TERM_PROGRAM_VERSIONZshell 實現的 Ghostty 能力版本
ZSHELL_TERMghostty 或 alacritty,也就是窗格實際使用的後端

兩個後端都通過 TERM_PROGRAM 聲明 Ghostty,因為支持圖片和通知的 CLI 會把它當作能力提示。只有確實需要區分渲染器時,才看 ZSHELL_TERM。

Zshell 不讀取 ~/.config/ghostty,也不讀取 Alacritty 配置。字型、顏色、輸入行為和後端都在 Zshell 自己的設定裡配置。

從 Dock 或 Finder 啟動時,Zshell 會讀取登入互動 shell 的 SSH_AUTH_SOCK,讓 SSH 使用 dotfiles 選定的 agent。從終端啟動時保留有效的繼承 agent。

系統權限

Zshell 終端機中的本機程式可以要求使用相機、麥克風,或透過 Apple Events 控制其他 App。 macOS 會將這些要求歸屬於 Zshell;請只允許你信任的程式。自動化權限依受控制的目標 App 分別授權。

你可以在 系統設定 → 隱私權與安全性 → 相機、麥克風或自動化 中管理權限。 拒絕要求會阻止對應功能,Zshell 不會自動授予這些權限。

滑鼠移入聚焦

啟用 設定 → 終端 → 行為 → 滑鼠移入聚焦,指標進入終端窗格時即可切換焦點。預設關閉,兩種後端和快速終端都適用。拖曳時、編輯器持有焦點時、選單或對話框開啟時不會搶焦點。

terminal.focus-follows-mouse = true

操作快速鍵
查找Cmd+F
查找下一個Cmd+G
查找上一個在查找欄裡按 Shift+Return
用選中內容查找Cmd+E
清空終端機Cmd+K

查找作用於當前終端機或編輯器窗格,並且在搜尋輸入框拿著鍵盤焦點時仍然有效。

提示符編輯

在活動 shell 提示符內點按,輸入游標會移到點擊位置,後續輸入就從那裡開始。zsh 提示符中,可在輸入內容上拖拽選中一段文字:繼續輸入會替換選區,按 Backspace 或 Delete 會刪除選區。雙擊、三擊仍用於選擇終端機輸出文字;全螢幕 TUI 等主動啟用終端機滑鼠上報的程式,仍會收到自己的滑鼠事件。

嵌套啟動或替換的 shell 若未載入 Zshell 的提示符編輯支持,拖拽仍可選擇、複製終端機文字,但不會直接修改輸入。退出嵌套 shell、回到原提示符後,輸入選區編輯會自動恢復。

Claude Code 的標準輸入框在兩個後端中也支持點擊定位和拖選編輯,包括自動折行和多行草稿。 選中後輸入或貼上會替換選區,按 Backspace 或 Delete 會刪除選區。 Vim 普通/可視模式、對話框、附件或折疊貼上內容的佔位符,以及捲動歷史中的文字,仍沿用終端機原有的選區行為。 已接管滑鼠的程式繼續自行處理輸入。

Zisla 的語音輸入通過終端機貼上插入文字,也可替換 Claude Code 輸入框中的選區;主動重復輸入同一句話仍會正常保留。

前台程式快速鍵

當終端機程式的快速鍵與 Zshell 衝突時,在當前窗格右鍵勾選 屏蔽 Zshell 指令。 該窗格獲得鍵盤焦點後,Ctrl+Return 等組合鍵會交給前台程式, 複製、貼上和全選仍可使用。

開關只影響當前窗格。再次右鍵取消勾選,即可恢復 Zshell 快速鍵。 如果程式已接管滑鼠,按住 Shift 再右鍵可打開 Zshell 選單。

提示詞隊列

聚焦終端機,按 Cmd+Shift+M,或在指令面板選擇 顯示/隱藏 提示詞隊列,即可在該終端機底部打開隊列欄。輸入內容後按 Return 或點擊 加入隊列。每項只保留一行,貼上內容中的換行會替換為空格。

原來的 zsh 回到空 Shell 提示符時,Zshell 會按入隊順序發送下一項並按下 Return。 Agent 或其他前台程式仍佔用終端機、或者提示符中已有草稿輸入時,自動發送會等待。 自動發送需要 Zshell 的 zsh 集成;其他 Shell 和嵌套 Shell 可以手動發送。

每項都有 立即發送和 移除按鈕。立即發送會直接把文字和 Return 交給終端機當前執行的 程式,不等待 Shell 提示符。按 Esc 或關閉按鈕只會隱藏隊列欄,已有隊列仍然保留。 每個終端機的隊列獨立;關閉工作階段或退出 Zshell 後,隊列會被清空。

路徑與 URL

Zshell 能識別終端機程式打印出來的網頁 URL 和確實存在的本地路徑。本地鏈接可以是絕對路徑、以 ~/ 開頭、以 ./ 或 ../ 開頭,也可以相對窗格的實時工作目錄。診斷資訊末尾的 :42 或 :42:7 不會妨礙找到背後的檔案。

  • Command 點按本地路徑會在 Finder 裡顯示它;點網頁 URL 則交給系統預設瀏覽器。
  • 按住 Command 右鍵路徑,會出現 New File Tab / New File Pane;對 URL 則出現 New Browser Tab / New Browser Pane。
  • 啟用滑鼠報告的全螢幕程式會收到普通右鍵。按住 Shift 再右鍵,可改為打開 Zshell 的終端機和窗格選單。

這樣一來,編譯器輸出和 agent 對話就能直接回到同一個專案裡。網頁相關行為見 瀏覽器窗格。

通知

Zshell 會把兩類終端機事件轉給通知中心:

  • 未聚焦工作階段裡的鈴聲;
  • 構建工具或編碼 agent 發出的 OSC 777;notify 請求。

通知可以播放系統提示音。點通知會啟用 Zshell,並跳到發出它的確切工作階段。macOS 只在某個終端機第一次真的要通知時申請權限,不會在 Zshell 啟動時就彈框。

指令完成通知

打開 設定 → Terminal → 指令通知,可以讓 Zshell 在指令結束時提醒你:

  • 長時間執行的指令:可選 5、10、30、60 秒。執行時間達到該值後結束的指令會觸發通知, 預設 關閉。
  • 失敗的指令:退出狀態非零時通知,不受執行時長限制。新配置預設開啟,可以獨立關閉。

設定只影響修改之後新建的 zsh 終端機,兩個終端機後端都支持。通知依賴原 Shell 的指令完成事件; 嵌套 Shell 或交互程式內部執行的指令,不會通過這項集成逐條報告完成。

也可以寫入 ~/.config/zshell/config.toml:

terminal.notify-finish-seconds = 30
terminal.notify-on-error = true

將 terminal.notify-finish-seconds 設為 0 可關閉按時長觸發的通知。 通知是否送達仍取決於 macOS 的通知設定。

進度顯示

發出 OSC 9;4 進度的程式,會在終端機上方得到一條細進度條,正常、暫停和錯誤狀態各有區分。不需要打開任何開關——程式報告了,窗格就顯示。

剪貼簿、拖放與貼上安全

  • 讀剪貼簿要確認。 OSC 52 可以申請讀取 macOS 剪貼簿,包括通過 SSH 跑在遠端的程式。Zshell 會先問你。
  • 有風險的貼上會提示。 多行或看起來會立即執行指令的文本,會先停在確認步驟。
  • 檔案與截圖變成 shell 安全路徑。 Finder 檔案插入為加上引號的絕對路徑。剪貼簿只有圖片時,會儲存到私有暫存 PNG,再貼上路徑供終端程式讀取。遠端窗格先將複製的檔案與截圖上傳到主機,再插入遠端路徑。

Option 鍵輸入

預設情況下,Option 交給當前 macOS 輸入源,因此 Polish Pro 之類的佈局可以輸入組合字符。如果終端機程式需要把 Option 組合鍵當成 Meta 快速鍵,打開設定裡的 Use Option as Alt/Meta。對應配置鍵是 terminal.macos-option-as-alt。

zshell 指令

每個 Zshell 終端機都帶一套瞭解專案上下文的 CLI:

zshell                         # 以當前目錄新建專案
zshell vim ~/src/app.swift     # 新建專案,並讓第一個終端機直接執行這組 argv
zshell +themes                 # 交互式瀏覽和預覽主題
zshell +themes --list --dark   # 不打開瀏覽器,直接列出主題名
zshell +help                   # 查看全部指令組

主題瀏覽器會把當前選項實時預覽到整個應用;Return 儲存,Escape 恢復之前的主題。

字型

Zshell 內建 JetBrains Mono 和 Nerd Font 符號。拉丁字形可以換成任意已安裝的等寬字型家族, 還可在符號字型與系統後備字型之前插入一個已安裝的 CJK 字型家族。見 font-family、 terminal.font-fallback-family、 font-size、 terminal.font-thicken 和 terminal.line-height。

全局快速終端機

Zshell 執行時,按 Cmd+I 或選擇 終端機 → 快速終端機,即可顯示或隱藏獨立的終端機。可在 設定 → 終端機 → Quick Terminal 調整大小、透明度和快速鍵。

工作階段行為: 重用工作區 (預設) / 每次建立新工作區. 重用模式保留窗格和工作。新建模式在隱藏時結束工作區。模式變更於下次顯示時生效;切回後仍可繼續原本的重用工作區。指令歷史依照既有 Shell 設定。 新建模式每次只開啟一個空白終端機,不還原先前的輸出、分割配置或工作階段狀態;不會清除或停用指令歷史和 HISTFILE。

可用工具列的 向右分屏 / 向下分屏、終端機右鍵選單或 Cmd+D / Cmd+Shift+D 分割。以下保留行為僅適用於重用工作區,包括分割比例和焦點。

  • 快速鍵、Esc、點擊外部或失去焦點只會隱藏視窗;同一個 Shell、輸入內容、捲動歷史和執行中的工作都會保留。
  • 固定視窗後,切換應用時仍保持顯示。隱藏後會保留大小、透明度和固定狀態。
  • 在 Shell 中執行 exit 可結束工作階段;再次開啟會建立新的 Shell。

開啟新的快速終端機前啟用 terminal.preserve-sessions,即可在正常結束 Zshell 後繼續執行;重新啟動應用後開啟快速終端機,兩個後端都會重新連接原 Shell。Zshell → 結束 App 並結束所有工作階段 也會結束隱藏的快速終端機。macOS 重新啟動後工作階段會結束。

快速啟動用於儲存和執行指令,是另一項功能。

Vim 指令提示

在 設定 → 終端機 → 行為 → Vim 指令提示 中調整開關,再打開右側的 資訊 分頁。 使用 Vim、Vi 或 Neovim 時,工作階段資訊下方會出現 VIM 常用指令。 此功能在新配置中預設開啟,開關立即作用於兩種後端的現有終端機。

完整常用指令列表始終保留,只按可見模式調整優先級:普通模式優先顯示 :w、:q、yy 和 p/P;可視塊模式 優先顯示 I/A、塊修改和角點切換。插入、替換、可視、可視行、選擇、指令行和 搜尋模式各有對應排序。每條指令標注適用模式;搜尋框可按按鍵、當前語言的描述 或模式名稱篩選,描述和搜尋介面支持應用中的全部 17 種語言。清空搜尋即可恢復完整列表。 提示僅供查閱,不會向編輯器發送按鍵。

本地編輯器通過前台可執行程式識別。SSH、Mosh 和終端機復用器中的編輯器通過可見的 Vim 模式行、狀態欄和螢幕佈局識別,無需安裝遠端插件。請保留 Vim 的 showmode 或可識別的狀態欄;隱藏或改名後的模式提示可能回退為普通模式提示,或使遠端檢測 無法生效,自訂映射不會被解析。僅當前活動的資訊面板會進行檢測;前台程式切換 或編輯器不再可識別時,提示會消失。

也可在配置檔案中設定 terminal.vim-command-hints = true。