終端機本身
Zshell 的終端機後端、shell 環境、鏈接處理、通知與安全功能。
每個終端機窗格都執行你真正的登錄 shell,並使用兩個原生 GPU 加速後端之一。窗格焦點、搜尋、通知、鏈接、歷史、主題和貼上安全由 Zshell 統一管理,所以無論選哪個模擬器,外圍行為都一致。
終端機後端
在 設定 → Terminal → Backend 裡選擇:
| 後端 | 說明 |
|---|---|
| Ghostty | 預設選項 |
| Alacritty | 通常佔用更少記憶體 |
兩者都支持 GPU 加速、圖片渲染、Zshell 的共享主題目錄、查找、滑鼠上報、通知和進度。後端改動只影響之後新建的終端機;已有窗格繼續使用啟動時的模擬器。
你的 shell,原封不動
每個工作階段啟動你帳戶的登錄 shell,所以提示符、別名、函式和 dotfiles 都和其他終端機裡一樣載入。 Zshell 額外設定了能力與身份變數:
| 變數 | 值 |
|---|---|
TERM_PROGRAM | ghostty |
TERM_PROGRAM_VERSION | Zshell 實現的 Ghostty 能力版本 |
ZSHELL_TERM | ghostty 或 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。