终端
Mobile SSH 终端专为手机和平板操作而设计。它结合了终端画布、扩展按键栏、多会话窗格、滚动处理和重连行为。
终端基础
- 终端采用 xterm 风格的行为,支持颜色和光标键处理。
- 回滚缓冲区默认保留 5000 行,可在设置中改为 1,000、10,000 或 50,000 行。
- 输入前先点按窗格以选中它。
- 在终端窗格上双指捏合可更改文字大小。手势稳定后,Mobile SSH 会调整远程 PTY 的大小。
- 双击窗格(或使用其展开按钮)进入全屏模式。在 Android 上使用返回键,或在 iOS 上使用收起按钮,回到网格。
多会话网格
Mobile SSH 最多可同时运行八个 SSH 会话。每个会话以窗格形式显示在终端网格中。点按窗格以选中它,或使用 + Add Session 开始另一个连接。
窗格标题会告诉你当前身处何处。在 Android 上,它显示该窗格真实的工作目录——来自向 tmux 查询或 shell 通过 OSC 7 上报,并在应用打开期间持续刷新;在 iOS 上,它显示远端设置的标题,没有标题时回退为 user@host:port。
关闭窗格会断开该 SSH 会话。返回主界面后仍可通过活动会话打开连接。标题会显示连接停滞;设置中可显示传输速率,并选择在连接无响应时调暗画面或振动。
Eternal Terminal(ET)
两个平台都可在添加或编辑服务器时通过传输方式选择以下选项:
- SSH —— 标准的 SSH 连接(默认)。
- Eternal Terminal —— 一种 ET 会话,可在网络中断、设备休眠和 IP 地址变化后继续存活,而无需重启你的 shell。
ET 会把会话保留在服务器上,因此当手机切换网络或从休眠中唤醒时,Mobile SSH 会重新接回同一个正在运行的 shell,而不是新开一个。这让它非常适合移动数据、Wi-Fi/蜂窝网络切换以及长时间运行的命令。
ET 需要主机运行 etserver。如果缺失,Mobile SSH 可提议通过 SSH 安装并启动它。查看并批准安装命令后,选择 Eternal Terminal 连接。跳板机路由必须使用 SSH 传输方式。
扩展按键栏
两个平台都把十三个终端按键放在触手可及的位置——正是触摸键盘上不便输入或干脆没有的那些键。在 Android 上,它是会话底部的一条按键带(接上硬件键盘时会自动隐藏);在 iOS 上,它悬在软键盘上方。
两套默认按键数量相同,但并不完全一致:
| Android | iOS | |
|---|---|---|
| 默认按键 | ESC TAB CTRL 方向键 HOME PGUP END PGDN ⌫ ⌨ | ESC TAB CTRL ⇧ 方向键 HOME END PGUP PGDN ⌨ |
| 差异 | 有退格键,没有 Shift | 有粘滞 Shift,没有退格键 |
这一行按键从不横向滚动。 当宽度放不下时,按键会均分空间并换到第二行;仍然多出来的按键会收进 ⋯ 溢出菜单。没有任何按键会藏在滑动手势之后或被屏幕边缘裁掉,而且已经按下待用的修饰键,对你从溢出菜单中选出的按键同样有效。
CTRL 是粘滞修饰键:点按 CTRL,再输入 C,即可发送 Ctrl-C。Shift 在 iOS 上比在 Android 上更「粘」——在 iOS 上,它还会让你在软键盘上输入的下一个字符变成大写,而在 Android 上,它只作用于按键栏自身的按键(Shift+Tab、Shift+方向键)。
按住方向键或 PGDN 之类的按键不放,它会连续重复。
键盘行为
Android 的普通终端输入直接发送到远程 shell,默认关闭自动更正和预测建议。语音听写仍可通过键盘提交文本。
iOS 默认启用设置 → 终端 → 听写和建议,支持编写当前行时的听写、预测与更正。若需原始按键输入,请关闭它,保持键盘建议关闭,再打开新窗格。
点按显示键盘决定轻触是否唤起软键盘:Android 默认关闭,iOS 默认开启。工具栏上的键盘按钮仍然可用。
硬件键盘
外接与 Bluetooth 键盘可在 Android 和 iOS 上直接驱动终端。除普通字符外,Mobile SSH 还映射方向键、Home/End、PgUp/PgDn、Insert、Delete、Esc、功能键 F1–F12、Ctrl+按键以及 Alt/Option 作为 Meta 的组合键,还有 Shift+Tab。这些修饰键可与扩展按键栏的粘滞修饰键组合使用。
粘贴
向请求粘贴的程序(bash、Vim 以及其他支持括号粘贴的应用)粘贴时,内容会被括号粘贴标记包裹,因此多行剪贴板内容会作为文本插入,而不会被逐行自动执行。只有真正的粘贴才会被包裹;输入和听写的文本不受影响。
选择、复制、分享
长按终端内的单词以选中它,再拖动手柄调整选区。选择工具栏包括:
- 复制 —— 将所选文本放入系统剪贴板。复制后所选内容仍保持高亮,因此你可以分享、再次复制或扩展它。
- 分享 —— 将所选文本传给系统分享面板(邮件、笔记、消息等)。
- 全选 —— 将选择扩展到整个可见终端缓冲区,然后复制或分享。
- 粘贴——将剪贴板文本插入终端。
在终端中查找
搜索整个终端缓冲区——回滚缓冲区与可见屏幕——并在匹配项之间跳转。从终端控件中打开查找,输入查询词,然后逐个跳转到命中项。此功能在 Android 和 iOS 上均可使用。
颜色、斜体与远程剪贴板
- 终端可渲染 24-bit 真彩色 与 斜体,因此主题化提示符、语法高亮和 TUI 的显示效果与桌面端一致。
- **OSC 52 剪贴板:**远程程序可将文本复制到手机剪贴板。读取手机剪贴板须通过单独的设置明确允许,默认关闭。
- 在 Android 与 iOS 上,宽 CJK、emoji 与组合字符(字素簇与零宽连接符)都能被正确测量和绘制,内置的 Nerd Font 也可绘制 powerline、starship、devicon 与 Material Design 图标字形,否则系统字体只会将其显示为空白方框。
Shell 集成与内嵌图像
- Shell 集成(OSC 133): 当你的 shell 发出 OSC 133 提示符标记时,Mobile SSH 可以在提示符之间逐个跳转,并在长时间运行的命令完成时提醒你。在 Android 与 iOS 上均可用。两个应用都不会自行注入这些标记——必须由你的 shell 发出(通过
PROMPT_COMMAND/precmd钩子,或 starship)。在 Android 上,提示符导航默认关闭,需要在 Settings → Shell integration 中启用;在 iOS 上,只要开始收到标记,相应菜单就会自动出现。 - 选中输出: 在某条命令的输出内任意位置轻触,即可选中整段输出——包括 300 行之前那次构建的报错,而不只是最后一条命令——然后复制、分享或继续扩展选区。
- **内嵌图像:**Android 和 iOS 都可直接绘制 Kitty graphics 协议图像。图像以字符单元格计量并跟随所在行,捏合缩放和重新换行后仍保留,不会留下空白。全屏应用也可显示图像,其位置与普通回滚缓冲区分开管理。
- **马赛克字形:**方块、盲文、六分格和八分格由应用自行绘制,所以无论选择什么字体,
chafa、timg和 ANSI 字符画都能准确铺满网格,没有缝隙或空方框。 - **图像分辨率:**图像设置可向终端图像程序报告完整、二分之一或三分之一的显示分辨率,减少移动网络传输的像素。
- 真实工作目录(Android): 窗格标题显示该窗格实际所在的位置,来自向 tmux 查询或 shell 通过 OSC 7 上报,而不是最后一个提示符碰巧打印出来的内容。
外观与按键
在 Android 与 iOS 上,Settings 让你可以定制终端:
- 字体: 选择系统等宽字体、JetBrains Mono 或 Source Code Pro。
- 配色方案: Default、Solarized Dark 或 Light、Gruvbox、Dracula 或 Nord——实时应用到已打开的窗格。
- 扩展按键栏: 添加、移除、重新排序和隐藏按键,定义你自己的转义序列按键,并恢复默认,还带有实时预览,可以看到最终确切的换行效果。Android 把它放在 Keys 标签页;iOS 放在 Extra keys → Customize keys 下。
- 从预设添加: 一个约 45 个按键、分为六组的预设面板——
F1–F12、^C^D^Z^R^L等 Ctrl 组合键、|~/_:等符号,以及修饰键。F1–F12以普通转义序列发送,因此无需FN组合键。Android 还提供 📎 Attach a file 按键,可打开文件选择器并把文件上传到正在运行的会话;iOS 则提供INS、DEL以及一个可展开数字行的FN键。 - 回滚缓冲区大小: 1,000、5,000、10,000 或 50,000 行(默认 5,000 行)。对新打开的窗格生效。
- 文字大小: 一个滑块,与捏合缩放并存。
- 主题: 整个应用可设为跟随系统、浅色或深色。
恢复默认会还原随版本发布的默认设置,而不是把今天这份列表固定下来,因此后续版本的改进依然能到达你手上。修改会实时应用到已经打开的窗格。
滚动
Mobile SSH 根据终端状态路由滚动手势:
- 在正常 shell 输出中,滑动会滚动本地回滚缓冲区。
- 在鼠标模式的终端应用中,滚动会发送鼠标滚轮转义序列。
- 在没有鼠标模式的备用屏幕应用中(如许多 tmux 会话),滚动会进入 tmux 复制模式并发送逐行滚动命令。
两个平台在跟踪鼠标的程序中默认把轻触作为鼠标左键单击。iOS 的点按放置光标可改为移动光标;Shift 加轻触执行另一种操作。按住再拖动的鼠标输入默认关闭,普通滑动用于滚动。
如果你在回滚状态下输入,Mobile SSH 会返回到实时终端视图。
tmux 行为
Mobile SSH 会观察发出的 tmux attach 和新建会话命令,例如:
tmux attach -t work
tmux a -t work
tmux new -A -s work
连接中断时,应用记住所连接的 tmux 会话和套接字,以便重连后返回该目标。同一主机的不同窗格各自保留连接目标。如果会话已不存在,仍可使用 shell。
iOS 切换套接字时会读取当前 tmux 前缀,不会假定为 Ctrl+B。前缀不受支持或查询失败会显示消息并停止。输入、关闭窗格或断开连接会取消尚未完成的连接步骤;应用不会向无法识别的全屏程序发送连接命令。
Tmux 管理器
Mobile SSH 的 tmux 管理器无需输入前缀组合键即可浏览和控制 tmux。从已连接会话的多路复用器控件打开它;若有多个管理器,长按控件选择 tmux。它分为三个部分:
- Sessions —— 服务器上的每一个 tmux 会话。
- Windows —— 所选会话中的窗口。
- Panes —— 所选窗口中的窗格。
在管理器中你可以:
- 把某个会话 附加 到当前终端。
- 创建 新的会话或窗口,并 重命名 它们。
- 水平或垂直 拆分 窗格、缩放 窗格,以及 结束 会话、窗口或窗格。
- 按最近使用(默认)、名称或创建日期排序。
🔔 会标记出智能体正在等待输入的会话,因此你一眼就能发现暂停下来的 Claude Code 或 Codex 运行,并附加到它。这与上文的重新附加提示互为补充:重新附加逻辑会在重连时自动恢复你上次的会话,而管理器则给你完整的手动控制。
两个平台都可管理同一主机上的多个 tmux 服务器(套接字)。管理器的连接标记表示你当前使用的终端,而非服务器上的其他客户端。
Herdr 和 Zellij
Android 和 iOS 都支持 Herdr 与 Zellij。一个工具栏控件打开主要的已检测多路复用器,长按可选择其他程序。只显示该服务器上找到的程序。在管理器中,服务器标题用于切换服务器,多路复用器选择器用于切换管理器。
- Herdr 显示会话、工作区、标签页、窗格和智能体状态。可从列表预览或回复等待输入的智能体。回复始终指向所选窗格和命名会话;发送提交文本,仅回车发送空白确认。支持精确聚焦时可选择窗格,否则使用父标签页的聚焦操作。Herdr 无需额外钩子即可提供智能体状态。
- Zellij 会列出会话、标签页与窗格,并支持附加、重命名、结束和拆分。被结束的会话仍会留在列表中,因此附加即可让它们复活,而删除则会彻底忘掉它们。标签页与窗格的详细信息需要 Zellij 0.44 或更高版本;在更旧的版本上,页面只显示标签页名称并说明原因。拆分需要有客户端附加在该会话上,页面会直接说明这一点,而不是给出一个注定失败的按钮。
如果 herdr 或 Zellij 已安装但不在登录 shell 的 PATH 中,页面会主动提出为你加上。
每个已保存服务器都有连接时附加选项:自动检测、不附加、tmux、herdr 或 Zellij。自动模式根据检测结果和使用历史,优先选择此前使用的多路复用器,再选择有活动会话的,最后选择已安装的。没有缓存检测结果时打开普通 shell;后续探测只影响未来连接,不会打断当前输入。
智能体提醒
当远程的 AI 编码智能体——Claude Code、Codex、Gemini——被阻塞、正等着你时,Mobile SSH 会告诉你。它并不是靠读取你的终端输出去猜测。这里有两条路径,各自能提供的细节程度不同。
铃声
终端响铃可触发智能体提醒,默认忽略刚输入后的响铃。远程通知序列(OSC 9、OSC 777)和 OSC 133 命令完成提醒分别设置;iOS 默认均关闭,需手动启用。
这条路径不需要任何配置,但应用只知道有什么东西响了。
智能体钩子
要让应用知道是哪一个智能体在等待、正在做什么,请在服务器上安装智能体钩子:
- iOS: Settings → Agent alerts → Install Agent Hook。如果连接了多台服务器,它会询问装到哪一台。
- Android: 长按某个会话的窗格标题,选择 Install agent hooks。
这会在该服务器上写入一个小的 shell 脚本 ~/.mobile-ssh/agent-hook.sh。它与具体智能体无关——它接受命令行参数,而不是解析某一家厂商的格式——因此任何能执行命令的东西都可以通过它上报。删除该文件即可干净卸载。
一旦某个智能体通过钩子上报:
- 窗格标题会显示
claude · needs you,或者标出它正在运行的工具。 - 智能体被阻塞的窗格会加上琥珀色边框。你正在看的那个窗格不受影响——提示就在眼前。
- 工具栏角标会统计所有连接上正在等待的智能体数量,上限显示为
9+。 - Agents 界面列出每个连接上的每一个智能体,包括它在做什么以及已经等了多久。
无需打字即可作答
当智能体提出的问题带有固定的几个选项时,应用会在「智能体」列表中为每个选项显示一个按钮——最多六个。在 Android 上,你还可以点按窗格标题里的智能体标签。
你的回答不会被输入到会话里。它会通过单独的通道写入一个文件,再由钩子取走,因此作答不会破坏屏幕上正在显示的内容。应用会拒绝发送提示本身并未提供的选项;如果连接期间已经断开,它也会明确告诉你,而不是悄无声息地失败。
设置
两个平台默认开启智能体提醒,可分别控制通知、声音、振动和活动窗格提醒。iOS 默认也提醒活动窗格,另可选择仅在后台通知。只有应用获准运行时 iOS 才能接收这些事件;长时间后台挂起会中断实时 SSH 提醒。
有一项默认设置值得知道:声音仅限耳机。在没有插入或配对耳机时,提醒会发出通知和振动,但不会播放提示音。如果你希望通过手机扬声器听到提醒,请关闭该项。
这里没有灵敏度设置,也没有提示音选择器——控制项只有开和关。
全屏终端程序
对于 Vim、less、htop、ncurses 工具和 tmux 窗格等程序:
- iOS 若需原始终端输入,请关闭听写和建议及键盘建议,然后打开新窗格。
- 使用扩展按键栏输入
ESC、方向键、PGUP和PGDN。 - 如果文字太小,使用捏合缩放,然后稍等片刻让远程终端大小稳定。
远程桌面
两个平台都可通过 SSH 隧道中的 VNC 连接打开远程桌面。可使用已有共享屏幕,包括 macOS 屏幕共享,或批准配置受支持的 Linux 桌面。桌面须由远程服务器提供;仅有 SSH 权限不会创建图形会话。Linux 屏幕镜像需要 X11,不支持 Wayland;macOS 使用已有共享屏幕,不创建独立桌面。
通过触摸单击、拖动和缩放,用软键盘或硬件键盘输入。剪贴板控件可把手机文本粘贴到桌面,桌面也可把文本复制回手机。
屏幕大小提供预设和自定义尺寸,并按服务器记忆。iOS 每条边须为 320–5120 像素。服务器支持时可实时调整大小并保留运行中的应用。仅由本应用创建的独立桌面可在确认后通过重启调整;已有桌面和共享控制台不会因此重启。Mac 不支持实时调整时,请在其显示器设置中更改分辨率。