Tmux是一个终端复用器,它允许你在一个终端窗口中创建多个会话窗口窗格,并能保持这些工作状态长期运行,即使关闭SSH连接也不会中断。下面是详细的使用教程。

📦 核心概念:会话 > 窗口 > 窗格

理解Tmux的三个层级是熟练使用它的关键:

  • 会话(Session):是Tmux的最高层级工作空间。你可以在一个会话中完成一项完整的工作(例如“开发项目A”),然后将其分离(detach),它会在后台继续保持运行。稍后可以随时附加(attach) 回来,一切状态如初。
  • 窗口(Window):一个会话中可以包含多个窗口,类似于浏览器中的标签页。每个窗口都占据整个屏幕,用于处理一项独立的任务(例如“运行服务器”、“编辑代码”、“查看日志”)。
  • 窗格(Pane):在一个窗口内,你可以分割出多个窗格,用于同时显示和操作多个终端。

🎯 常用命令速查表

下面的表格汇总了最核心的操作命令,你可以先快速浏览,有个整体印象。

功能类别 操作 默认快捷键 (前缀键 Ctrl+b 后接)
会话管理 新建命名会话 tmux new -s <会话名>
分离当前会话 前缀键 + d
列出所有会话 tmux ls前缀键 + s
进入/附加会话 tmux attach -t <会话名>
窗口管理 创建新窗口 前缀键 + c
切换下一个窗口 前缀键 + n
切换上一个窗口 前缀键 + p
按编号切换窗口 前缀键 + <窗口号>
重命名当前窗口 前缀键 + ,
关闭当前窗口 前缀键 + &
窗格管理 垂直分割(左右) 前缀键 + %
水平分割(上下) 前缀键 + "
切换活动窗格 前缀键 + 方向键
调整窗格大小 前缀键 + Alt + 方向键
关闭当前窗格 前缀键 + x 或直接 exit
全屏显示当前窗格 前缀键 + z (再按一次恢复)
其他重要 进入复制模式 前缀键 + [
粘贴复制的内容 前缀键 + ]
查看快捷键列表 前缀键 + ?

🚀 详细使用指南

第一步:启动与基础会话操作

  1. 启动新会话tmux new -s my_session (创建一个名为 my_session 的会话)。
  2. 分离会话:在Tmux会话中,按下 Ctrl+b,松开后按 d。会话会在后台继续运行。
  3. 查看会话列表tmux ls 或在命令行直接按 前缀键 + s
  4. 重新连接会话tmux attach -t my_session (附加到指定会话)。如果想直接附加到最后一个会话,也可以用 tmux a
  5. 退出(销毁)会话:在会话内部,可以输入 exit 关闭所有窗格和窗口,或使用 tmux kill-session -t my_session 从外部结束。

第二步:在会话内管理窗口

你可以把窗口理解为“任务标签页”。

  • 创建前缀键 + c
  • 切换
    • 下一个:前缀键 + n
    • 上一个:前缀键 + p
    • 直接按编号:前缀键 + 09
  • 重命名前缀键 + ,,然后输入新名字。
  • 关闭前缀键 + & 或直接在该窗口输入 exit

第三步:在窗口内管理窗格(分屏)

这是Tmux最强大的功能之一,可以实现灵活的多任务并行。

  • 分割
    • 垂直分割(左右):前缀键 + %
    • 水平分割(上下):前缀键 + "
  • 切换前缀键 + 方向键 (上下左右)。
  • 调整大小(需要稍微记忆):
    • 前缀键 + Alt + 方向键 (通常有效,取决于终端)。
    • 或者,先按 前缀键 + : 进入命令模式,输入 resize-pane -L 5 (向左调整5个单元格,L/R/U/D对应方向)。
  • 布局:Tmux内置了几种窗格排列布局,按 前缀键 + Space 可以循环切换。
  • 全屏/恢复前缀键 + z (放大当前窗格至全屏,再按一次恢复)。

第四步:进阶操作 - 复制模式

Tmux有自己的复制粘贴缓冲区,与系统剪贴板不同。

  1. 进入复制模式:前缀键 + [
  2. 此时可以用方向键或Vim风格(hjkl)移动光标。
  3. Space 开始选择,移动光标选择文本区域。
  4. Enter 复制所选文本到Tmux缓冲区。
  5. 粘贴:前缀键 + ]

提示:可以配置Tmux使用系统剪贴板,但这通常需要额外的插件或终端支持。

第五步:自定义配置(~/.tmux.conf)

Tmux的默认键位可能不太顺手,你可以创建配置文件 ~/.tmux.conf 来自定义。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 将前缀键从 Ctrl+b 改为 Ctrl+a (很多人觉得更方便)
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# 设置鼠标支持(可以鼠标选择窗格、调整大小、滚屏)
set -g mouse on

# 设置更易记的窗格分割键
bind | split-window -h # 使用 | 垂直分割
bind - split-window -v # 使用 - 水平分割

# 设置状态栏更美观
set -g status-bg blue
set -g status-fg white

修改配置后,在Tmux内按 前缀键 + : 输入 source-file ~/.tmux.conf 重新加载,或重启Tmux生效。

💡 实用技巧与场景

  • 长期运行任务:在服务器上启动一个Tmux会话,运行需要长时间执行的任务(如编译、下载),然后放心地断开SSH连接。之后重新连接,tmux attach 就能继续查看进度。
  • 结对编程:使用 tmux new -s pair_programming 创建会话,对方通过SSH登录后,可以用 tmux attach -t pair_programming 连接到同一个会话,实现实时共享终端。
  • 会话恢复:即使服务器重启,也可以通过插件(如 tmux-resurrect)来保存和恢复会话状态。

⚠️ 常见问题

  • 如何滚动查看历史输出?:进入复制模式(前缀键 + [),然后用方向键或PageUp/PageDown滚动。如果配置了 mouse on,也可以直接用鼠标滚轮。
  • 快捷键没反应?:确保先按 Ctrl+b(或你自定义的前缀键),松开后再按命令键。例如,垂直分割是:1) 按Ctrl+b,2) 松开,3) 按%
  • 嵌套在另一个Tmux或Screen里面?:这可能导致快捷键冲突,最好避免。

掌握Tmux需要一些练习,建议从创建一个命名会话、分割两三个窗格、尝试分离和重新连接开始。一旦熟悉,它将极大提升你在命令行下的工作效率。