Skip to content

集成终端 ​

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 … 5Mod + 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 同样可以复制和粘贴。

长按输入重音字符(macOS)。 长按某个字母键会打开 macOS 的重音字符选择器。此时原字母已经发送给 shell,所以当你选中一个重音字符时,VMark 会先发送一个退格(DEL),再发送该重音字符。如果某个程序不把 DEL 当作删除前一个字符,你可能会看到原字母仍然留在那里。

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——你正位于 17 个匹配中的第 3 个。
  • 5000 处匹配——匹配数量太多,终端无法追踪当前是哪一个,因此只报告总数而不显示位置。
  • 无结果——查询没有匹配到任何内容;输入框中的文字也会变红。

输入框与箭头之间有三个开关:

开关作用
Aa区分大小写
ab仅匹配整个单词
.*将查询视为正则表达式

开启正则模式时,输入到一半的模式(例如正要输入 [a-z] 时的 [)只会显示无结果,而不会报错——继续输入即可。每次关闭搜索栏或切换会话时,这些开关都会重置。

右键菜单 ​

在终端内右键点击可访问:

  • 复制——复制选中文本(无选中内容时禁用)
  • 复制(合并折行)——复制选中内容,并去除按显示宽度产生的换行。一些命令行程序(codex 及其他 TUI 应用)会按终端宽度插入真正的换行符来硬折行输出;普通复制会保留这些换行。"复制(合并折行)"会把折行重新拼接成连续的段落(空行作为段落分隔保留)。它能识别 CJK——中文/日文文本拼接时不会插入空格。请选中你确定属于同一段逻辑内容的文本块,因为 VMark 无法区分折行产生的换行与有意的换行。
  • 粘贴——从剪贴板粘贴到 Shell
  • 全选——选中整个终端缓冲区
  • 清空——清除可见输出
  • 重置显示——重新绘制终端并重置其渲染缓存。如果在长时间会话后出现字符重叠、大小写混乱或显示乱码,请使用此功能——这在长时间运行样式繁多的 CLI(例如 Claude Code)时最为常见。同一窗口中的终端共享一个字形缓存,因此它会重新绘制窗口中的所有终端,而不仅仅是当前标签。
  • 复制命令输出——复制某条命令打印的全部内容,不含其提示符行,也不含下一条命令的输出。只有在命令输出内部右键点击且 Shell 集成已开启时才会出现,因为正是 Shell 集成告诉 VMark 每条命令从哪里开始、在哪里结束。

该菜单完全支持键盘操作:打开时焦点位于第一个可用操作上,方向键在各项之间移动(跳过禁用项),Home/End 跳到第一项/最后一项,Enter 或 Space 执行,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 在每个终端会话中设置以下环境变量:

变量值
TERMxterm-256color
TERM_PROGRAMWezTerm
TERM_PROGRAM_VERSION20240203-110809-5046fc22
VMARK_WORKSPACE工作区根路径(打开文件夹时)
PATH完整的登录 Shell PATH(与系统终端相同)
COLORTERMtruecolor
LC_CTYPEUTF-8——仅限 macOS

TERM_PROGRAM 报告的是 WezTerm 而不是 vmark,这是有意为之。一些 CLI 工具——其中包括 Claude Code 的 /terminal-setup——只对硬编码白名单中的终端启用 CSI u 按键编码,对其他所有终端则退回到功能受限的"未知终端"路径。VMark 支持该协议,因此它把自己标识为白名单中行为与其最接近的终端。若把这个值改成 vmark,这些工具中的 Shift+Enter 及其他带修饰键的按键序列就会悄无声息地失效。参见 ADR-006。

LC_CTYPE=UTF-8 仅在 macOS 上设置。在 macOS 上,从 Dock 或聚焦搜索启动的图形界面应用几乎继承不到任何环境变量,如果不设置它,Shell 会退回到 C 区域设置,工具会把 CJK 文本显示为 ?。裸名称 UTF-8 在 macOS 上是一个有效的区域设置,在 Linux 上却不是,因此在 Linux 上设置它会用一个无效值替换本来完好的继承区域设置——所有调用 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 快捷键(如 zsh/bash 中的 Ctrl+R 反向历史搜索)在终端获得焦点时有效——它们不会被编辑器拦截。

在终端已运行的情况下工作区根目录发生变化时,空闲的会话会自动 cd 到新的根目录。正在执行命令(比如 vim 或 less)的会话不会被打断:它会在命令结束后再切换目录,而检测这一点需要 Shell 集成。开启工作区导轨后,属于某个工作区的会话会保留各自的目录。没有 Shell 集成时——在 Windows 上、使用 fish 时,或该设置关闭时——VMark 无法判断会话是否忙碌,因此 cd 会被直接输入到前台正在运行的程序中。

AI CLI 工具与其自带的浏览器访问 ​

Claude Code、Codex CLI 等 AI CLI 工具会在终端中作为普通程序运行。VMark 为它提供三种彼此独立的能力,分清这三者能让故障排查容易得多:

项目提供方CLI 能做什么
终端VMark像在任何终端窗口中一样,用你的登录 Shell 和 PATH 执行命令
VMark MCPVMark(在 设置 → 集成 中安装其配置之后)通过 VMark 自己的 MCP 工具读写 VMark 中打开的文档
浏览器工具AI 客户端,而非 VMark通过客户端自带的集成访问浏览器,例如 Chrome 扩展或浏览器自动化服务器

VMark 不配置、不代理,也不为浏览器工具背书。要确认浏览器连接,应从该会话中读取真实页面标题——退出码为 0 和工具目录中出现某个名字,都不能证明连接成功。扩展安装、桌面应用连通性、工具发现和实际页面访问是四项彼此独立的检查。

重启边界很重要。新启动的 CLI 进程仍可能与更早启动的共享后台应用服务器通信,因此客户端版本和服务器版本可能不同;排查问题时请把两者都记下来。VMark 的终端不会替你重启或隔离这些进程。

不要为了打通浏览器连接而启用远程调试、复制信任覆盖设置或放宽原生桥接检查。这些做法会扩大浏览器可访问的每个页面的权限模型,而以此得到的结果并不是配置方案。

macOS 上的麦克风、摄像头与 Apple 事件 ​

在集成终端中运行的程序可以请求使用麦克风、摄像头,或控制其他应用的权限(Apple 事件,osascript 会用到)。macOS 会以 VMark 的名义询问,因为它把 VMark 视为终端所启动的一切程序的责任应用。macOS 询问时请选择允许;之后可以在系统设置 → 隐私与安全性的麦克风、摄像头或自动化中更改。请求发生在程序首次使用该资源时,而不是打开终端时。

如果程序录到的是静音、拍到的是黑屏,或报告“未授权”错误,而且没有出现提示,请在对应的设置页面中检查 VMark 是否在列表中并已允许。报告问题时,请附上该程序的输出。

对于 BlackHole 这类虚拟音频输入,仅有权限并不能完成音频路由。请在录音工具中选择目标输入、把音频路由到该输入,并先验证一段短录音再开始长时间录制:音频文件在变大,本身并不能证明录到了声音。VMark 不包含录音或转写工具;这些命令来自你另行安装的工具。

尚未实现 ​

以下功能已在跟踪中,但目前尚未提供。之所以在此列出,是因为本页的早期版本曾把其中一些描述得好像已经可用:

  • 暂停 / 恢复会话。VMark 可以在内部挂起 Shell 进程——当输出到达的速度超过终端的渲染速度时,它会自动以此进行流量控制——但没有面向用户的控件,也没有可供放置该控件的会话标签右键菜单。
  • 阻塞式的 vmark --wait,以便让 $EDITOR 指向 VMark(参见上文的 Shell 环境)。
  • 跨重启保留回滚缓冲区(参见持久化)。
  • fish Shell 集成(参见 Shell 集成)。

设置 ​

打开 设置 → 终端 进行配置:

设置范围默认值平台
面板大小可用空间的 10 % – 80 %,步长 5 %40 %全部
字体大小10 – 24 px13 px全部
行高1.0 – 2.01.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 的钩子:SessionStart 钩子条目仍保留在 Claude Code 的 settings.json 和 Codex 的 hooks.json 中(VMark 不会为了删除它们而改写你的 CLI 配置),但在该设置关闭期间,钩子脚本会立即退出,VMark 也会忘掉所有已有的对话记录绑定。每个新 shell 仍会收到 VMARK_TRANSCRIPT_TOKEN 变量,因此重新开启该设置后,对已经打开的会话同样有效。

无障碍 ​

设置选项默认值
终端响铃关闭 / 视觉 / 声音视觉
最小对比度关闭 / 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 会将其转交给系统剪贴板。

bash
# From anywhere the terminal can print — including over ssh:
printf '\e]52;c;%s\a' "$(printf 'hello' | base64)"

只允许写入——读取始终被拒绝

OSC 52 也定义了读取剪贴板的方式,而 VMark 从不响应,即使开启了此设置也一样。任何能向你的终端打印字节的进程都可以发起读取请求——包括对一个并非你编写的文件执行 cat——而返回的内容会像你亲手输入的一样到达。iTerm2 和 VS Code 出于同样的原因拒绝读取。此设置控制的是写入;读取则无条件拒绝。

关闭 设置 → 终端 → 远程剪贴板(OSC 52) 即可彻底关闭此通道。更改对新启动的会话生效。

Shell 集成 ​

开启 Shell 集成 后,VMark 会向 Shell 注入轻量的命令标记,让终端知道每条命令从哪里开始、在哪里结束。它带来:

  • 提示符跳转——Cmd + ↑ / Cmd + ↓ 跳到回滚缓冲区中的上一个 / 下一个命令提示符。
  • 退出状态标记——一条细的边栏条把每一行命令标为绿色(成功)或红色(失败)。
  • 实时跟踪工作目录——输出中的相对文件路径会相对于 Shell 的当前目录解析,新终端也会在该目录中打开。

支持 zsh 和 bash,适用于 macOS 和 Linux。两种情况下的注入都是非破坏性的——先加载你真正的配置,VMark 的钩子是追加而不是替换,因此你的提示符、主题和别名都不受影响。

ShellVMark 的挂接方式保留的内容
zshZDOTDIR 指向一个生成的 .zshrc,它先加载你的配置,再用 add-zsh-hook 注册钩子尊重自定义的 $ZDOTDIR:VMark 通过登录 Shell 解析出你真正的 $ZDOTDIR,并从那里加载 .zshenv 和 .zshrc,而不仅仅是从 $HOME 加载
bashbash --rcfile <generated>,它会先加载 ~/.bashrc已有的 PROMPT_COMMAND 和已有的 DEBUG trap 都会被组合而不是被替换——因此 bash-preexec、direnv 和 atuin 仍能正常工作

由于终端运行的是交互式非登录 Shell,仅在登录时加载的文件(.zprofile、.bash_profile、.profile)对两种 Shell 都不在范围内,这与普通终端标签页的行为一致。

fish 尚未集成;它可以正常运行,只是没有这些功能。关闭此设置可完全禁用注入。更改对新启动的会话生效(重启终端即可应用)。

持久化 ​

终端面板是否打开会在热退出重启后保存和恢复。它的大小就是面板大小设置——占窗口的一个比例,拖动调整大小手柄会更新它——因此它随你的设置一起保存,无论面板位于哪一侧,都能在每次重启后保留。Shell 进程本身无法被保留——重启时会为每个会话生成新的 Shell。回滚缓冲区同样不会保留:恢复它意味着把经过终端的所有内容(包括 API 密钥)写入磁盘,因此这一功能被有意留给一个先解决这一问题的设计。