tmux 小白入门教程
什么是 tmux?
tmux 是一个终端复用器(terminal multiplexer),简单说就是:让你在一个终端窗口里同时管理多个会话。
它的核心价值在于:
- SSH 断线不丢:在远程服务器上跑的任务,关掉电脑或网络断了也不会中断
- 分屏操作:一个窗口同时看日志和敲命令
- 多任务并行:同时开多个工作区,互不干扰
如果你有过这样的经历——编译到一半 SSH 断了,一切重来——那 tmux 就是你的救星。
安装
bash
# Ubuntu / Debian
apt install tmux
# CentOS / RHEL
yum install tmux
# macOS
brew install tmux安装后验证:
bash
tmux -V
# 输出示例: tmux 3.2a核心概念
tmux 有三层结构,理解了它们就理解了 tmux 的一切:
tmux 服务器
└─ 会话 (session) ← 你正在工作的一整块任务
└─ 窗口 (window) ← 一个标签页
└─ 窗格 (pane) ← 一个分屏区域打个比方:
- 会话 = 一张办公桌(一个项目的工作环境)
- 窗口 = 桌上的一个文件夹(一个任务,比如看日志)
- 窗格 = 文件夹里的分格(正在执行的具体操作)
前缀键:tmux 的「施法前摇」
tmux 的所有快捷键都需要先按 前缀键,再按功能键。
默认前缀键是 Ctrl + b(按住 Ctrl,再按 b)。
操作步骤:
- 先松手
- 按
Ctrl + b - 松开所有键
- 再按功能键(比如
c创建窗口)
你会看到很多教程写作
C-b或Prefix,都是一个意思。
会话管理 — 最常用的操作
创建会话
bash
# 创建无名会话
tmux new
# 创建有名字的会话(推荐)
tmux new -s 会话名
# 示例
tmux new -s myproject脱离会话(detach)— 关键操作
还在运行但想退出:
| 快捷键 | 操作 |
|---|---|
C-b d | 脱离当前会话 |
脱离后,会话仍在后台运行,你可以安全地关掉终端。
重新连接(attach)
bash
# 列出所有会话
tmux ls
# 重新连回指定会话
tmux attach -t 会话名
# 常用缩写
tmux a -t 会话名在会话内退出
bash
exit
# 或按 Ctrl + d当会话里所有窗口都退出后,会话自动结束。
杀死会话
bash
tmux kill-session -t 会话名
# 杀死所有会话
tmux kill-server重命名会话
| 快捷键 | 操作 |
|---|---|
C-b $ | 重命名当前会话 |
窗口管理 — 就像浏览器标签页
| 快捷键 | 操作 |
|---|---|
C-b c | 创建新窗口 |
C-b , | 重命名当前窗口 |
C-b p | 上一个窗口 |
C-b n | 下一个窗口 |
C-b 0-9 | 切换到指定编号的窗口 |
C-b w | 交互式选择窗口(上下键选) |
C-b & | 关闭当前窗口 |
窗格分屏 — 一屏多用
| 快捷键 | 操作 |
|---|---|
C-b % | 垂直分屏(左右) |
C-b " | 水平分屏(上下) |
C-b 方向键 | 切换到相邻窗格 |
C-b q | 显示窗格编号(按编号快速跳转) |
C-b z | 最大化/还原当前窗格(toggle) |
C-b x | 关闭当前窗格 |
C-b 空格 | 循环切换窗格布局 |
C-b { | 当前窗格左移 |
C-b } | 当前窗格右移 |
C-b ! | 将当前窗格拆成独立窗口 |
调整窗格大小
| 快捷键 | 操作 |
|---|---|
C-b Ctrl+方向键 | 按方向调整大小 |
C-b Alt+方向键 | 微调大小(1 个单位) |
复制与粘贴
tmux 有自己的剪切板,和系统剪切板是独立的。
| 快捷键 | 操作 |
|---|---|
C-b [ | 进入复制模式(方向键移动) |
空格 | 开始选择文本 |
回车 | 复制选中文本并退出 |
C-b ] | 粘贴复制的文本 |
小技巧:按住
Shift再选文本,可以直接用系统剪切板(大部分终端支持)。
实用场景
场景 1:跑长时间任务
bash
# 1. 创建会话
tmux new -s compile
# 2. 开始编译(比如编译内核)
make
# 3. 按 C-b d 脱离
# 4. 关电脑走人
# 5. 回来重新连
tmux a -t compile
# 编译还在跑!场景 2:一边看日志一边操作
bash
# 1. 创建会话
tmux new -s debug
# 2. 垂直分屏
# 按 C-b %
# 3. 左窗格用 tail 看日志
tail -f /var/log/syslog
# 4. 切换到右窗格(C-b 右方向键)
# 敲命令测试
curl http://localhost:8080场景 3:同时打开多个项目
bash
# 分别创建会话
tmux new -d -s project-a
tmux new -d -s project-b
tmux new -d -s project-c
# 查看所有会话
tmux ls
# 按需连接
tmux a -t project-b配置文件(~/.tmux.conf)
如果你不想每次都用默认的前缀键 C-b(小指太累了),可以自定义。
创建一个 ~/.tmux.conf 文件:
bash
vim ~/.tmux.conf以下是一个小白友好配置:
# 把前缀键改为 C-a(按 Ctrl+a,小指不用那么累)
set -g prefix C-a
unbind C-b
bind C-a send-prefix
# 用更快的按键重载配置
bind r source-file ~/.tmux.conf \; display "已重载配置"
# 鼠标支持(点选窗格、拖动调整大小、滚轮翻页)
set -g mouse on
# 窗格编号从 1 开始(默认从 0)
set -g base-index 1
set -w pane-base-index 1
# 增大滚动缓冲区(默认 2000 行)
set -g history-limit 10000
# 更直观的分屏键
bind | split-window -h
bind - split-window -v
# 使用 Alt+方向键切换窗格(不用按前缀键了)
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D
# 状态栏美化
set -g status-bg black
set -g status-fg white
set -g status-left ' #[fg=green] #S '
set -g status-right ' #[fg=yellow] %H:%M '保存后加载:
bash
# 方法一:在 tmux 内按 C-b r
# 方法二:手动执行
tmux source-file ~/.tmux.conf说明:这个配置文件的第一版可能会遇到
no current window报错,见站内文章 tmux.conf 报错修复。
常用命令速查表
| 命令 | 说明 |
|---|---|
tmux new -s 名称 | 创建命名会话 |
tmux ls | 列出所有会话 |
tmux a -t 名称 | 重新连接会话 |
tmux kill-session -t 名称 | 杀死会话 |
tmux kill-server | 杀死所有会话和服务 |
tmux new -d -s 名称 | 在后台创建会话(不进入) |
| 快捷键 | 说明 |
|---|---|
C-b d | 脱离会话 |
C-b c | 新建窗口 |
C-b % | 垂直分屏 |
C-b " | 水平分屏 |
C-b 方向键 | 切换窗格 |
C-b z | 最大化/还原窗格 |
以上默认
C-b是前缀键,如果改成了C-a则相应替换。
总结
tmux 的核心用法就三句:
tmux new -s 项目名— 开始一个持久会话C-b d— 随时脱离,任务继续tmux a -t 项目名— 回来继续
掌握了这些,你就可以告别 SSH 断线焦虑,开始享受分屏操作的高效了。