tmux 与 Mosh
tmux 鼠标模式集成、Mosh 稳定连接及实时活动
tmux 与 Mosh
MTerm 与 tmux 深度集成,并原生实现了 Mosh 协议,为你提供两款强大的远程会话管理工具。本指南介绍两者的工作原理以及如何充分利用它们。
tmux 集成
如果你在远程服务器上使用 tmux,MTerm 会让它感觉像应用的原生功能,而不是终端内运行的独立工具。
鼠标模式自动检测
MTerm 自动检测 tmux 是否启用了鼠标模式,并将你的触控手势转换为相应的鼠标事件。MTerm 端无需任何配置 — 只需确保你的 ~/.tmux.conf 包含:
set -g mouse on
启用后,你的触控操作会直接映射到 tmux 操作:
- 轻触 tmux 窗格可切换焦点
- 滑动 触控或触控板可滚动浏览 tmux 历史
三种鼠标模式设置
你可以在 MTerm 的设置中控制此行为:
| 模式 | 行为 |
|---|---|
| 自动(默认) | 仅当 tmux 鼠标模式处于活跃状态时发送鼠标事件。当鼠标模式关闭时,滚动使用 MTerm 自身的滚动缓冲区。 |
| 始终开启 | 始终将触控事件转发给 tmux,即使未明确启用鼠标模式。适用于希望所有滚动和轻触操作直接发送到 tmux 的情况。 |
| 关闭 | 从不向 tmux 发送鼠标事件。所有滚动使用 MTerm 的本地滚动缓冲区。 |
备用屏幕自动检测
MTerm 会检测终端何时进入备用屏幕模式(Vim、less、htop 和 tmux 本身等应用使用)。这会影响滚动行为 — 当备用屏幕处于活跃状态时,滚动会转发给正在运行的应用,而不是滚动 MTerm 的本地缓冲区。
tmux 会话和窗口管理
由于 MTerm 原生处理 tmux 鼠标事件,你可以:
- 点击状态栏中的 tmux 窗口标签切换窗口
- 点击 tmux 窗格切换焦点
- 在各个 tmux 窗格内滚动
- 通过拖拽窗格边框使用 tmux 的鼠标调整窗格大小功能
OSC 1212 处理器
MTerm 实现了 OSC 1212 转义序列处理器,用于 tmux 和应用之间的上下文共享和通知。这支持高级集成场景,tmux 可以将状态变化反馈给 MTerm。
Mosh 连接
Mosh(Mobile Shell)解决了从移动设备使用 SSH 时最大的困扰之一:连接断开。标准的基于 TCP 的 SSH 在网络变化时会立即断开 — 从 Wi-Fi 切换到蜂窝网络、在接入点之间移动,或遇到短暂的网络中断。Mosh 优雅地处理所有这些情况。
Mosh 的工作原理
与使用持久 TCP 连接的 SSH 不同,Mosh 使用 UDP。这意味着:
- 网络变化不受影响。 在 Wi-Fi 和蜂窝网络之间切换,你的会话永不断开。
- 短暂中断自动处理。 如果你失去连接几秒钟(甚至几分钟),Mosh 会自动重连而不丢失任何状态。
- 更低的延迟。 Mosh 在本地预测你的按键并立即显示,如果预测错误会稍后纠正。这使得即使在高延迟连接上打字也感觉响应迅速。
- 没有挂起的会话。 TCP 连接可能在超时前挂起数分钟。Mosh 连接要么正常工作,要么立即告诉你已断开。
设置 Mosh
-
在远程主机上安装 mosh-server:
# Ubuntu/Debian sudo apt install mosh # macOS brew install mosh # CentOS/RHEL sudo yum install mosh -
在 MTerm 中,编辑主机设置,将连接方式从 SSH 更改为 Mosh。
-
像往常一样连接。MTerm 会先建立 SSH 连接来引导 Mosh 会话,然后切换到 UDP 进行实际的终端会话。
何时使用 Mosh
Mosh 在以下情况下非常理想:
- 在 Wi-Fi 不可靠的地方工作(咖啡馆、机场、火车上)
- 频繁切换网络
- 使用信号强度不稳定的蜂窝数据
- 运行需要在网络中断后保持活跃的长期会话
对于可靠网络上的稳定连接,标准 SSH 完全可以满足需求,并且具有支持端口转发和其他基于 TCP 功能的优势。
Mosh 需要 Pro 套餐
实时活动(锁屏和灵动岛)
MTerm 使用 iOS 实时活动功能,即使应用在后台运行,也能让你了解活跃会话的状态。
锁屏小组件
当你有活跃的 SSH 或 Mosh 会话时,锁屏上会出现一个实时活动小组件显示连接状态。你可以一目了然地看到会话是否仍然连接、正在重连还是已断开 — 无需解锁设备或打开应用。
灵动岛
在配备灵动岛的设备上(iPhone 14 Pro 及更新机型),MTerm 会显示紧凑的连接状态指示器。点击灵动岛可直接跳转回终端会话。
为什么这很重要
如果你正在运行较长的 Claude Code 任务并切换到其他应用查看邮件或浏览文档,实时活动让你无需反复切回 MTerm 即可监控连接。结合 Webhook 通知,你可以放心离开应用,确信任务完成或连接断开时会收到通知。