终端复用器。断开 SSH 不怕掉线,一个窗口当十个用。
记住一个键就够了:Ctrl+b —— 后面所有操作都从它开始。
SSH 连服务器时,网络一断,跑着的程序就跟着没了。tmux 把终端跑在一个常驻后台的进程里: 你断开、重连,甚至关掉电脑,里面的活儿照跑。
tmux attach 接着看。macOS: brew install tmux · Ubuntu/Debian: sudo apt install tmux · 已装可跳过。
| session 会话 | 最外层容器,后台常驻。一台机器可以有多个,比如 work、logs。 |
| window 窗口 | 会话里的一张“标签页”,占满整个屏幕。一个会话可有多个窗口。 |
| pane 面板 | 窗口里切出来的一块分屏,每个面板是独立终端。 |
# 新建一个名为 work 的会话 tmux new -s work # 看一眼有哪些会话在跑 tmux ls # 从会话里“脱离”,它转后台继续跑(快捷键:Ctrl+b 然后 d) # 重新接回来 tmux attach -t work # 简写 tmux a -t work # 彻底关掉某个会话(里面的程序也会停) tmux kill-session -t work
| Ctrl+b c | 新建窗口(create) |
| Ctrl+b n / p | 下一个 / 上一个窗口(next / previous) |
| Ctrl+b 0…9 | 直接跳到第 N 个窗口 |
| Ctrl+b , | 给当前窗口改名(窗口多时很有用) |
| Ctrl+b w | 列出所有窗口,方向键选着跳 |
| Ctrl+b & | 关闭当前窗口(会问 y/n) |
| Ctrl+b % | 左右切一刀(竖分) |
| Ctrl+b " | 上下切一刀(横分) |
| Ctrl+b ← ↑ ↓ → | 在面板之间移动光标 |
| Ctrl+b z | 当前面板全屏 / 还原(临时放大) |
| Ctrl+b 空格 | 换个分屏布局 |
| Ctrl+b x | 关闭当前面板(会问 y/n) |
| Ctrl+b } / { | 和相邻面板交换位置 |
tmux 里鼠标滚轮默认不管用,得进“复制模式”翻历史:
写进 ~/.tmux.conf,改完执行 tmux source-file ~/.tmux.conf 生效。
# 开鼠标:滚轮翻页、拖动选中、点击切面板 set -g mouse on # 窗口编号从 1 开始(默认从 0,有点反直觉) set -g base-index 1 setw -g pane-base-index 1 # 前缀键从 Ctrl+b 换成 Ctrl+a(少按一个键,tmux 老手常用) # set -g prefix C-a # unbind C-b # bind C-a send-prefix # 用 | 和 - 分屏,比 % 和 " 顺手 bind | split-window -h bind - split-window -v # 按 r 重载配置 bind r source-file ~/.tmux.conf \; display "已重载配置 ✓"
set -g mouse on。滚轮和鼠标选择立刻可用,体验提升最大。命令(在 shell 里敲)
tmux new -s name tmux ls tmux a -t name tmux kill-session -t name tmux kill-server
最后一条:一键清掉所有会话。
快捷键(先按 Ctrl+b)
d 脱离会话 c 新窗口 n/p 下/上窗口 % 竖分屏 " 横分屏 z 面板全屏 [ 滚动模式 ? 查看全部快捷键