Skip to content

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)。

操作步骤:

  1. 先松手
  2. Ctrl + b
  3. 松开所有键
  4. 再按功能键(比如 c 创建窗口)

你会看到很多教程写作 C-bPrefix,都是一个意思。

会话管理 — 最常用的操作

创建会话

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 的核心用法就三句:

  1. tmux new -s 项目名 — 开始一个持久会话
  2. C-b d — 随时脱离,任务继续
  3. tmux a -t 项目名 — 回来继续

掌握了这些,你就可以告别 SSH 断线焦虑,开始享受分屏操作的高效了。

基于 VitePress 构建