$ terminals _

tmux

推荐

终端多路复用器,支持会话管理、窗口分割和后台保持

🌐 官网 GitHub brew install tmux

简介

tmux 是一个终端多路复用器,允许你在一个终端窗口中创建多个会话、窗口和窗格。即使断开连接,tmux 中的程序也会继续运行,非常适合远程服务器管理。

安装

# macOS
brew install tmux

# Ubuntu/Debian
sudo apt install tmux

核心概念

  • 会话 (Session): 最顶层的容器,可以包含多个窗口
  • 窗口 (Window): 类似于浏览器标签页
  • 窗格 (Pane): 窗口内的分割区域

常用命令

# 新建会话
tmux new -s myproject

# 列出会话
tmux ls

# 附加到会话
tmux attach -t myproject

# 断开会话(不关闭)
# 在 tmux 中按 Ctrl+b d

快捷键(默认前缀 Ctrl+b)

按键功能
%垂直分割窗格
"水平分割窗格
c新建窗口
n/p下/上一个窗口
方向键切换窗格
d断开会话
z全屏/还原窗格

推荐插件

  • TPM — tmux 插件管理器
  • tmux-resurrect — 会话持久化,重启后恢复
  • tmux-continuum — 自动保存/恢复会话

典型场景

场景一:SSH 远程服务器上保持长时间任务

SSH 断开后任务不中断,重连后恢复现场:

# 连接服务器后立即创建命名会话
ssh user@server
tmux new -s deploy

# 在 tmux 内启动耗时任务
./deploy.sh production

# 网络断开后重连,任务继续运行
ssh user@server
tmux attach -t deploy

场景二:开发环境一键启动布局

把常用的窗口分割保存为脚本,每次开发一条命令还原工作区:

#!/bin/bash
# ~/scripts/dev-layout.sh
SESSION="myapp"
tmux new-session -d -s $SESSION -x 220 -y 50

# 窗口1:编辑器
tmux rename-window -t $SESSION:1 "editor"
tmux send-keys -t $SESSION:1 "nvim ." C-m

# 窗口2:上下分割,上面跑服务,下面跑日志
tmux new-window -t $SESSION:2 -n "server"
tmux send-keys -t $SESSION:2 "npm run dev" C-m
tmux split-window -v -t $SESSION:2
tmux send-keys -t $SESSION:2 "tail -f logs/app.log" C-m

# 窗口3:空终端备用
tmux new-window -t $SESSION:3 -n "shell"

tmux attach -t $SESSION

场景三:跨窗格复制粘贴

在不同窗格间共享命令输出:

# 进入 copy mode(vi 模式)
# Ctrl+b [
# 用 v 开始选择,y 复制
# Ctrl+b ] 粘贴

# 在 .tmux.conf 中启用 vi 模式
# setw -g mode-keys vi
# bind-key -T copy-mode-vi v send-keys -X begin-selection
# bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel