终端本身
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 控制其他应用。 macOS 会将这些请求归属于 Zshell;请只允许你信任的程序。自动化权限按被控制的目标应用分别授权。
你可以在 系统设置 → 隐私与安全性 → 摄像头、麦克风或自动化 中管理权限。 拒绝请求会阻止对应功能,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 → 退出并结束所有会话 也会结束隐藏的快捷终端。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。