终端

Mobile SSH 终端专为手机和平板操作而设计。它结合了终端画布、拓展按键栏、多会话窗格、滚动处理和重连行为。

终端基础

多会话网格

Mobile SSH 最多可同时运行八个 SSH 会话。每个会话以窗格形式显示在终端网格中。点按窗格以选中它,或使用 + Add Session 开始另一个连接。

窗格标题会告诉你当前身处何处。在 Android 上,它显示该窗格真实的工作目录——来自向 tmux 查询或 shell 通过 OSC 7 上报,并在应用打开期间持续刷新;在 iOS 上,它显示远端设置的标题,没有标题时回退为 user@host:port

关闭窗格会断开该 SSH 会话。返回起始屏幕时,活动会话仍可通过 Active Sessions 使用。

Eternal Terminal(ET)

每个已保存的服务器都可以使用两种传输方式之一,在添加或编辑服务器时用 Transport 选择器选定:

ET 会把会话保留在服务器上,因此当手机切换网络或从休眠中唤醒时,Mobile SSH 会重新接回同一个正在运行的 shell,而不是新开一个。这让它非常适合移动数据、Wi-Fi/蜂窝网络切换以及长时间运行的命令。

ET 需要主机上有一个 etserver 进程。如果服务器上没有,Mobile SSH 可以通过现有的 SSH 连接为你安装并启动它——无需手动配置服务器。ET 就绪后,选择 Eternal Terminal 传输方式连接即可。

拓展按键栏

两个平台都把十三个终端按键放在触手可及的位置——正是触摸键盘上不便输入或干脆没有的那些键。在 Android 上,它是会话底部的一条按键带(接上硬件键盘时会自动隐藏);在 iOS 上,它悬在软键盘上方。

两套默认按键数量相同,但并不完全一致:

AndroidiOS
默认按键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+TabShift+方向键)。

按住方向键或 PGDN 之类的按键不放,它会连续重复。

键盘行为

终端通过原生直通方式连接屏幕键盘:你每输入一个字符都会立即发送到远程 shell,自动更正与预测建议均已关闭,因此键盘绝不会在输入到达 shell 之前改写它。这让 Vim、tmux、htop、less、使用特殊组合键的 shell 以及远程密码提示都保持可预测——没有需要关闭的建议缓冲。

软键盘语音听写仍然可用:听写出的文本会像其他输入一样直接提交到 shell。

硬件键盘

外接与 Bluetooth 键盘可在 Android 和 iOS 上直接驱动终端。除普通字符外,Mobile SSH 还映射方向键、Home/EndPgUp/PgDnInsertDeleteEsc、功能键 F1F12Ctrl+按键以及 Alt/Option 作为 Meta 的组合键,还有 Shift+Tab。这些修饰键可与拓展按键栏的粘滞修饰键组合使用。

粘贴

向请求粘贴的程序(bash、Vim 以及其他支持括号粘贴的应用)粘贴时,内容会被括号粘贴标记包裹,因此多行剪贴板内容会作为文本插入,而不会被逐行自动执行。只有真正的粘贴才会被包裹;输入和听写的文本不受影响。

选择、复制、分享

在终端内长按可选中手指下方的单词,然后拖动手柄进行调整。选择工具栏提供三个操作:

在终端中查找

搜索整个终端缓冲区——回滚缓冲与可见屏幕——并在匹配项之间跳转。从终端控件中打开查找,输入查询词,然后逐个跳转到命中项。此功能在 Android 和 iOS 上均可使用。

颜色、斜体与远程剪贴板

Shell 集成与内嵌图像

外观与按键

在 Android 与 iOS 上,Settings 让你可以定制终端:

恢复默认会还原随版本发布的默认设置,而不是把今天这份列表固定下来,因此后续版本的改进依然能到达你手上。修改会实时应用到已经打开的面板。

滚动

Mobile SSH 根据终端状态路由滚动手势:

在 Android 上,在启用鼠标跟踪的程序内轻点,会被作为该单元格上的鼠标左键点击送出,因此 htop、vim 以及点击聚焦的窗格都能响应触摸。在 iOS 上,同样的程序中轻点只会弹出键盘而不会产生点击;只有滚轮滚动会被上报。

如果你在回滚状态下输入,Mobile SSH 会返回到实时终端视图。

tmux 行为

Mobile SSH 会观察发出的 tmux attach 和新建会话命令,例如:

tmux attach -t work
tmux a -t work
tmux new -A -s work

当你在 tmux 中时连接断开,应用可记住该服务器最后的 tmux 会话名称,并在重连后尝试重新挂接。如果未观察到明确的会话名称,但应用知道你处于备用屏幕的类 tmux 会话中,它可能会尝试通用的 tmux attach

此行为为尽力而为。如果远程 tmux 会话不再存在,远程 shell 仍然可用。

Tmux 管理器

Mobile SSH 内置了一个 tmux 管理器,让你无需敲前缀组合键就能浏览和控制 tmux。在已连接的会话中用 Tmux 按钮打开它。它分三部分列出内容:

在管理器中你可以:

🔔 会标记出智能体正在等待输入的会话,因此你一眼就能发现暂停下来的 Claude Code 或 Codex 运行,并附加到它。这与上文的 reattach 提示互为补充:reattach 逻辑会在重连时自动恢复你上次的会话,而管理器则给你完整的手动控制。

两个平台也都可以管理同一主机上的多个 tmux 服务器(socket),并按名称或创建日期对会话排序。

Herdr 与 Zellij(Android)

Android 为另外两种复用器提供了同样的能力。它们各有自己的工具栏图标,而且只有在应用确实在服务器上找到该程序之后,图标才会出现——因此不必运行 which,工具栏就已经告诉你那台机器上装了什么。

如果 herdr 或 Zellij 已安装但不在登录 shell 的 PATH 中,页面会主动提出为你加上。

每个已保存的服务器都有一个 Attach on connect 设置:Auto(自动检测)NothingtmuxherdrZellij。自动模式会先选你在该服务器上最近用过的那一个,其次是有活动会话的那一个,再次是已安装的那一个——而在尚未探测过该服务器时,它宁可什么都不附加,也不会瞎猜。

iOS 应用目前只支持 tmux。

智能体提醒

当远程的 AI 编码智能体——Claude Code、Codex、Gemini——被阻塞、正等着你时,Mobile SSH 会告诉你。它并不是靠读取你的终端输出去猜测。这里有两条路径,各自能提供的细节程度不同。

铃声

开箱即用的情况下,来自你没在看的那个会话的终端响铃会触发提醒,许多工具已经在发出的桌面通知转义序列(OSC 9、OSC 777)同样会触发。在你刚敲完键之后立刻到来的响铃会被忽略,因此普通的 shell 补全提示音不会来打扰你。

这条路径不需要任何配置,但应用只知道有什么东西响了。

智能体钩子

要让应用知道是哪一个智能体在等待、正在做什么,请在服务器上安装智能体钩子:

这会在该服务器上写入一个小的 shell 脚本 ~/.mobile-ssh/agent-hook.sh。它与具体智能体无关——它接受命令行参数,而不是解析某一家厂商的格式——因此任何能执行命令的东西都可以通过它上报。删除该文件即可干净卸载。

一旦某个智能体通过钩子上报:

无需打字即可作答

当智能体提出的问题带有固定的几个选项时,应用会在「智能体」列表中为每个选项显示一个按钮——最多六个。在 Android 上,你还可以点按窗格标题里的智能体标签。

你的回答不会被输入到会话里。它会通过单独的通道写入一个文件,再由钩子取走,因此作答不会破坏屏幕上正在显示的内容。应用会拒绝发送提示本身并未提供的选项;如果连接期间已经断开,它也会明确告诉你,而不是悄无声息地失败。

设置

两个平台上提醒都默认开启,并为通知、声音、振动,以及「你当前正在查看的会话是否也应提醒」分别提供开关。

有一项默认设置值得知道:声音仅限耳机。在没有插入或配对耳机时,提醒会发出通知和振动,但不会播放提示音。如果你希望通过手机扬声器听到提醒,请关闭该项。

这里没有灵敏度设置,也没有提示音选择器——控制项只有开和关。

全屏终端程序

对于 Vim、less、htop、ncurses 工具和 tmux 窗格等程序: