Tmux 用到的就这些:会话、分屏、 detach

SSH 到服务器上跑个长任务,网络断了,任务没了。Tmux 就是解决这个问题的——把终端会话和窗口解绑,关了终端进程还在跑。

Tmux Session Window Pane 结构图
Tmux 三层结构:Session 包含 Window,Window 包含 Pane

普通终端窗口和进程绑在一起。关窗口,进程就没了。SSH 断线同理。

Tmux 把会话(session)和窗口解绑:你关掉终端、断开 SSH,会话里的进程继续跑。下次接上,一切照旧。

同类工具还有 GNU Screen。Tmux 比 Screen 好用,功能也多,没什么理由选 Screen。

Tmux 有三个层级,搞清楚就不会晕:

  • Session(会话):最外层容器。一个 session 可以包含多个 window。detach 后 session 还在后台跑。
  • Window(窗口):session 内的标签页,底部状态栏显示编号和名称。
  • Pane(窗格):一个 window 内的分割区域,每个 pane 跑各自的命令。

日常使用中,一般一个项目开一个 session,里面按需要分 window 和 pane。

# Ubuntu / Debian
sudo apt-get install tmux

# CentOS / Fedora
sudo yum install tmux

# macOS
brew install tmux

日常 80% 的时间就在用这几个命令:

# 新建命名会话(别用默认编号,过两天忘了 0 和 1 分别是什么)
tmux new -s dev

# 分离会话(回到普通终端,session 在后台继续跑)
# 快捷键:Ctrl+b d
tmux detach

# 列出所有会话
tmux ls

# 接回某个会话
tmux attach -t dev
# 或者简写
tmux a -t dev

# 杀死会话
tmux kill-session -t dev

会话快捷键:

快捷键功能
Ctrl+b d分离当前会话
Ctrl+b s列出所有会话
Ctrl+b $重命名当前会话

一个窗口切成几块,同时看多个命令的输出。

# 上下分屏
tmux split-window
# 快捷键:Ctrl+b "

# 左右分屏
tmux split-window -h
# 快捷键:Ctrl+b %

# 切换窗格
# 快捷键:Ctrl+b + 方向键

# 全屏当前窗格(再按一次恢复)
# 快捷键:Ctrl+b z

# 关闭当前窗格
# 快捷键:Ctrl+b x

常用窗格快捷键:

快捷键功能
Ctrl+b %左右分屏
Ctrl+b "上下分屏
Ctrl+b 方向键切换窗格
Ctrl+b z全屏/还原
Ctrl+b x关闭窗格
Ctrl+b q显示窗格编号
Ctrl+b Ctrl+方向键调整窗格大小

一个 session 里开多个 window,相当于终端里的标签页。

快捷键功能
Ctrl+b c新建窗口
Ctrl+b n下一个窗口
Ctrl+b p上一个窗口
Ctrl+b 0-9跳到指定编号窗口
Ctrl+b w列表选择窗口
Ctrl+b ,重命名窗口
Tmux 速查表
Tmux 常用操作速查与最简工作流

一个典型的开发场景:

# 1. SSH 到服务器,开一个命名会话
ssh user@server
tmux new -s project

# 2. 分屏:左边编辑,右边运行
# Ctrl+b %  左右分屏
# 左边跑 vim,右边跑测试

# 3. 需要出门了,分离
# Ctrl+b d

# 4. 回来后接上,一切还在
tmux a -t project

在 Oracle 免费 VPS(https://byronfinn.github.io/2026-05-22-oracle-free-vps-guide/)上跑长任务,Tmux 基本是必须的——SSH 断了进程不能跟着断。

配合 SSH 远程开发(https://byronfinn.github.io/2026-05-17-codex-ssh-remote-guide/)和 VPS 术语扫盲(https://byronfinn.github.io/2026-05-16-vps-glossary-guide/),远程服务器上的基本操作就齐了。

默认配置够用。如果想改前缀键或加鼠标支持,创建 ~/.tmux.conf

# 把前缀键从 Ctrl+b 改成 Ctrl+a(Screen 用户的习惯)
unbind C-b
set -g prefix C-a
bind C-a send-prefix

# 开启鼠标支持(可以用鼠标切换窗格、调整大小、滚动)
set -g mouse on

# 窗格编号从 1 开始(0 在键盘太远了)
set -g base-index 1
setw -g pane-base-index 1

改完后生效:

tmux source-file ~/.tmux.conf

这是个人偏好,不改也能用。多数人加一个 set -g mouse on 就够了。

相关内容