为什么原厂 tmux 在手机上别扭
tmux 仍然是 SSH 断开后还能保住编辑器、测试监听和日志尾巴的最便宜办法。笔记本上几乎免费:你有 prefix、滚轮和实体 Escape。手机上这三样要么没有,要么慢半拍。点一下终端,窗格不会切过去;一滑,整段会话跟着跳,而不是窗格内部的缓冲区;在 Neovim 里按 Esc,要等半秒才进 Normal。这不说明 tmux 用错了,只说明默认服务端选项按桌面假设。
Termius 是带片段、密钥和可定制附加键行的完整 SSH 客户端。那一行附加键,才是「能打字母」和「能开复用器」的差别。tmux 仍跑在主机上。Termius 只需要发出 prefix、方向键,以及每次重连都挂回同一命名会话的启动命令。两层搅在一起是最常见的失败:有人把创建或挂接命令写进 ~/.tmux.conf,或者只改了键盘、却没开鼠标模式。
后面只要求你已经能登录的那一台主机。~/.tmux.conf 改一次,Termius 主机卡片上放一条启动片段,再钉三组按键。改完之后,通勤会话应打开原来的窗格,而不是把你丢进光秃秃的 shell。
- 会话在服务器上;手机只是客户端。
- 触控、Escape 和 prefix,是手机最先做错的三件事。
- Termius 片段和键盘附加栏在客户端;tmux.conf 不在。
这一页是什么,不是什么
下面五条编号提示,起点是 TermiusHQ 2026 年 8 月 26 日的串:https://x.com/TermiusHQ/status/2092720130723872858。我们按原串的措辞引用每一条,再补上原创操作说明:那一行打在哪、什么不要写进 tmux.conf、怎么重载、Termius 界面如何对上这些建议。这是改写后的 how-to,不是原串或 Termius 宣传页的逐字转载。
TermiusHQ 的开头说得对:tmux 很适合远程开发,但默认配置在手机或平板上会别扭。接着它给了五条很短的修法。你已经住在 tmux 里的话,那五行够了。你是第一次用手机上的 nano 改这个文件,或从没打开过 Customize Keyboard,那五行就不够。本页多出来的段落是写给第二种读者。
这里的命令是原串里的公开 tmux 选项。会话名、主机标签和键组顺序都是例子。把 "my_project" 换成你下周还认得的名字。若 Termius 菜单改过位置,以应用内文案为准,不要死盯截图日期。
1/5 打开触控:set -g mouse on
原串原话:打开触控,把 `set -g mouse on` 加进 ~/.tmux.conf——之后就能滚动、点窗格、拖着改大小。忠实地说,第一条提示就是这一句。手机上它重要,是因为没有鼠标模式时,滑动会被 Termius 当成终端回滚,或被系统当成手势,点击也不会切换当前窗格。打开之后,tmux 自己把触摸流当成鼠标事件。
在远程主机上改这个文件,不要改手机本地磁盘。Termius 壳里执行 nano ~/.tmux.conf 或 vim ~/.tmux.conf。把 `set -g mouse on` 单独放在靠前的一行。保存。已经在跑的会话不会重读文件,除非你在活会话里执行 `tmux source-file ~/.tmux.conf`,或者杀掉 server 再开。文件存在之后新开一次 `tmux new`,就够做第一次验证。
先加这一项之前,用三个手势验收。在输出超出一屏的窗格里滑,应动窗格而不是整段 Termius 缓冲;点第二个窗格,边框应标成当前;拖分割线,分隔条应跟着手指走。三件都不发生,要么改错了用户的家目录,要么会话还在用旧配置。
- 只加这一行:set -g mouse on
- 改 SSH 主机上的 ~/.tmux.conf,不要改本地 iCloud 文件。
- 重载或开新会话,然后滚动、点选、拖分割各做一次。

2/5 用 Startup Snippet 自动挂回会话
原串原话:自动恢复会话,把 `tmux new -A -s "my_project"` 写进 Termius 主机的 Startup Snippet——不要写进 tmux.conf。-A 表示会话在就挂上,不在就创建。整条提示的要点就是这个分工。tmux.conf 是会话启动时 server 读的。创建或挂接是客户端调用。把 `tmux new -A` 丢进 conf,下一次嵌套启动可能递归,或弹出 “sessions should be nested with care”。
在 Termius 打开主机卡片 → Edit Host → Startup Snippet。贴上 `tmux new -A -s "my_project"`,会话名换成你自己的。保存。下次连接会在登录后跑这一行,于是你进的是 tmux,不是裸提示符。一个真实项目用一个名字。两张主机卡片都挂 "dev"、又指向同一台机器,就会抢同一组窗格。
若这台主机已经有别的片段(ssh-agent、direnv、欢迎语),把 tmux 这一行放在最后,让前面的钩子先跑完。有时需要裸 shell,就为同一主机名再留一张片段为空的卡片。不要每天通勤来回开关片段,你会忘了上次留在哪种状态。
- Termius 路径:Edit Host → Startup Snippet。
- 命令:tmux new -A -s "my_project"
- 不要把这行写进 ~/.tmux.conf。
- -A 表示有则挂接,无则创建。

3/5 修掉 Vim / Neovim 里发黏的 Escape
原串原话:用 `set -sg escape-time 10` 和 `set -g focus-events on` 修发黏的 Escape。默认 500ms 会让 Vim 和 Neovim 迟钝。这 500ms 不是故障。tmux 要等 Esc 究竟是单独一键,还是 Alt/meta 序列的开头。实体终端上这点等待还能忍。手机上 Vim 每次切模式都要缴税,而软件键盘自己已经加过一次延迟。
10 毫秒是原串的值,也是建议你先试的值。有些桌面配置写成 0。0 会把真正的 meta 组合键弄坏,如果你还在 tmux 里用 Alt 绑定的话。手机上几乎不会发这些组合,所以在两种激进设置里,10 更稳。`focus-events on` 让 tmux 把焦点进出窗格转发给程序,Neovim 插件(git 标记、cursorline、剪贴板钩子)靠它在你从 Termius 切到别的 App 再回来时刷新。
两行都写进同一份 ~/.tmux.conf,重载,然后打开 nvim,从 Insert 点 Esc。状态栏应马上变成 Normal,没有肉眼可见的停顿。若没有,你 source 错了文件,或 conf 后面又有一行把 escape-time 改回去。在文件里搜 escape-time,只留一次赋值。
- set -sg escape-time 10
- set -g focus-events on
- 默认等待是 500ms,所以 Vim 才发黏。
- 除非你确定需要 0,否则先用 10。
4/5 复制模式:先按 prefix,再按 [
原串原话:用 Ctrl+B 再按 `[` 进入复制模式。加上 `setw -g mode-keys vi`。然后用 Vim 键、`/` 搜索、Space 选择、Enter 复制。在手机上,这是抓栈或提交哈希最稳的办法。系统划词会跟 tmux 窗格边框打架,并包错行。复制模式选的是窗格历史内部。
Ctrl+B 是默认 prefix。若你改成了 Ctrl+A,就发那个。按完 `[` 视口会冻结。有 `setw -g mode-keys vi` 时,移动键是 h j k l、w、b、0、$。`/` 打开搜索,n 重复。Space 开始选择,移到结尾,Enter 复制进 tmux 的粘贴缓冲。之后用 prefix 再 `]` 粘贴。Termius 自己还有粘贴按钮;那个按钮贴的是手机剪贴板,是另一块缓冲。
手机上缺的是没有实体 Ctrl 时怎么发出 prefix 和 `[`。所以第 5 条才把 `^B` 放在 Termius 键盘 Group 1。先在一份无所谓的文件上练一遍:^B、`[`、`/`、打一个词、Space、移动、Enter,再 ^B、`]`。若 Enter 没反应,你不在复制模式,或 mode-keys 仍是 emacs,开始选择的键不一样。
- Prefix(Ctrl+B)再按 [,进入复制模式。
- setw -g mode-keys vi
- Vim 移动、/ 搜索、Space 选择、Enter 复制。
- Prefix 再 ] 贴的是 tmux 缓冲,不是手机剪贴板。
5/5 定制 Termius 键盘附加栏
原串原话:定制 Termius 键盘附加栏。Group 1:^B(或你的 prefix)、Esc、^C、Ctrl。Group 2:方向键。原串配图里还有 Group 3:shift tab、?、/、|。这十二个键不是装饰。它们是手机键盘省略或藏进符号页的键,也恰好是 tmux、Vim 和 shell 一直要的键。
在 Termius 里,从终端会话或应用设置打开 Customize Keyboard(文案就是 “Customize Keyboard”)。把分组按钮排到 Group 1 是你最先看见的一行。若仍用默认 prefix,把 ^B 放第一个;若改过 prefix,就把那个组合放第一个。Esc 挨着它,Vim 切模式就不用找。^C 打断跑飞的命令。单独的 Ctrl 修饰键能组合 Ctrl+D、Ctrl+L、Ctrl+Z,而不必为每个组合单独加键。
Group 2 的方向键在复制模式和 tmux 菜单里移动。Group 3 给 tmux 自带帮助和命令行编辑:`?` 是 prefix 之后的按键列表,`/` 既是 Vim 搜索也是 tmux 搜索,`|` 是很多人肌肉记忆里的垂直分屏(原厂绑定是 prefix+%)。Shift-Tab 给补全界面和一些 TUI 往回走。打开 “Show keyboard button”,才能收起软件键盘却留下附加键行。
- Group 1:^B(或你的 prefix)、Esc、^C、Ctrl。
- Group 2:左、上、下、右。
- Group 3:shift tab、?、/、|。
- 打开 Show keyboard button,收起输入法时附加栏还在。

合并后的 ~/.tmux.conf
服务端这边四行就够。启动片段不要进这个文件。若你已经有一份更长的 conf,把这四行合并进去并删掉重复项,不要再追加第二份 mouse 或 escape-time。
保存后,新会话会自动读到文件。已经在跑的会话需要显式重载。不要为了重载 tmux 选项去重启 SSH;那只测得到片段,测不到 conf。
- set -g mouse on
- set -sg escape-time 10
- set -g focus-events on
- setw -g mode-keys vi
重载,然后在手机上验收
在已经存在的 tmux 会话里执行 `tmux source-file ~/.tmux.conf`。成功时通常没有输出。然后别离开手机:滚动、点窗格、在 Vim 里按 Esc、用 ^B 再 `[` 进复制模式。这四项过了,再断开重连,确认 Startup Snippet 挂回 "my_project",而不是又开一个 "my_project-1" 或裸 bash。
若重连变出 my_project-1,你写的是不带 `-A` 的 `tmux new -s`,或片段运行时 PATH 里还没有 tmux。用 login shell,或在片段里写 tmux 的绝对路径。若重连什么也没做,片段栏是空的,或你改的不是点进去的那张主机卡片。
- tmux source-file ~/.tmux.conf
- 滚动、点窗格、Vim 里 Esc、复制模式各一次。
- 断开再连,应进入同一个命名会话。
看起来像「手机上 tmux 坏了」的错
最常见的是把创建或挂接命令写进 ~/.tmux.conf。那份文件不是 shell。第二常见的是开了鼠标模式,却奇怪 Termius 回滚不再动:这是预期的,窗格现在吃掉滑动。历史已经滚出窗格时,用复制模式。
第三是在一台设备上改了键,以为 iCloud 或 Termius 团队保险库会同步到所有地方。在你通勤用的那台手机上再看一次 Customize Keyboard。第四是把 escape-time 留在 500,然后怪 Neovim。第五是每个会话都叫 "tmux",于是 -A 总挂到错误的项目。
- 把启动命令写进 tmux.conf,而不是主机片段。
- 已经在跑的 server 忘了重载。
- 以为手机剪贴板和 tmux 缓冲是同一块。
- 会话名太泛,项目之间撞车。
做完的标准
从手机冷连接能进命名会话、触控能选窗格、Esc 是立刻的、复制一行不必跟系统划词把手打架,才算做完。
- ~/.tmux.conf 里四行,每个选项一份。
- Startup Snippet 是 tmux new -A -s "你的名字"。
- 键盘 Group 1 以你的 prefix 开头。
- 已在活会话里测过重载。
- 重连是挂回,不是再开一个 name-1。
- 有人问起五条提示的出处,你能报出原串 URL。