我第一次在远程服务器上打开 tmux,恰好碰上网络掉线,屏幕瞬间变成一片空白。那一刻我心里暗暗想:要是能把会话锁进硬盘,哪怕掉线也能安然恢复就好了。于是,我决定从零把 tmux 打造成我的「终端指挥中心」,把它当成日常开发的第二块显示屏。
在大多数 Linux 发行版里,tmux 已经在官方仓库。只要一行 sudo apt-get install tmux(Debian/Ubuntu)或 brew install tmux(macOS),就能把它装进系统。装好后,敲 tmux -V 确认版本,看到类似 tmux 3.3a 的输出,说明已经可以玩了。
我把所有配置都写进 ~/.tmux.conf,省得每次手动敲键。下面这几行是我的必备:
# 使用 256 色
set -g default-terminal "screen-256color"
# 前缀键改成 Ctrl‑a(和 screen 更亲近)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
# 鼠标支持,滚动更顺手
set -g mouse on
# 状态栏美化
set -g status-bg colour235
set -g status-fg colour136
set -g status-left "#[fg=green]#S"
set -g status-right "#[fg=yellow]%Y-%m-%d %H:%M"
改完保存,执行 tmux source-file ~/.tmux.conf 让配置立即生效。切换前缀键后,我再也不用记住 C‑b,直接按 C‑a 就能打开所有快捷键,手感像回到 screen 那一年。
C‑a " 水平分屏 C‑a % 垂直分屏 C‑a o 在窗格间循环焦点 C‑a c 新建窗口 C‑a n / C‑a p 前后切换窗口 C‑a d 分离会话(断开而不关闭) 有了这些键,我可以在同一个终端里同时跑代码编辑、日志监控、单元测试,根本不需要再打开多个 tab。
tmux 本身已经够强大,但配几个插件后,它几乎能和 VS Code 的终端面板媲美。我常用的插件有:
Ctrl‑a I 一键安装所有插件。Ctrl‑a R 就能把所有窗口拉回来。把这些插件写进 ~/.tmux.conf,示例代码如下:
# TPM (Tmux Plugin Manager)
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
# 自动保存会话
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15'
# 绑定快捷键
bind R run-shell ~/.tmux/plugins/tmux-resurrect/scripts/restore.sh
bind S run-shell ~/.tmux/plugins/tmux-resurrect/scripts/save.sh
保存后 Ctrl‑a I 安装,几分钟搞定。以后即使服务器宕机,我也只需要重新 SSH,然后 tmux attach -t mysession,所有分屏、日志、REPL 都原封不动。
我在做前后端联调时,常常需要同时跑 npm run dev、docker-compose up、tail -f log.txt。去年我写了一个小脚本 dev.tmux,只要在项目根目录敲 tmux new -s dev -f dev.tmux,就会自动打开四个窗格:
# dev.tmux
new-session -d -s dev
split-window -h "npm run dev"
split-window -v "docker-compose up"
split-window -v "tail -f log.txt"
select-pane -t 0
执行完后,我的终端立刻变成了「前端+后端+日志」的实时监控面板,省掉了手动打开四个 tab 的时间,大约 30 秒的准备工作直接压缩成 2 秒的敲命令。
从最初的「只会开会话」到现在的「插件+脚本全自动」,tmux 已经成为我日常工作中不可或缺的「指挥塔」。如果你还在用单窗口敲命令,赶紧试试上面这套配置,保证你会爱不释手——毕竟,效率的提升往往只差这么一步。
参与讨论
这个配置真的省事儿
tmux-resurrect 在 macOS 上需要额外权限吗?
前几天我在服务器掉线后,直接用 tmux-resurrect 恢复,所有窗口都在,省了半天手工重开,真是救命 👍
鼠标滚动太灵敏,有点抖