关于Tmux的常用操作
Published:
tmux (Terminal Multiplexer) 是一个强大的终端复用器。它允许用户在单个终端窗口中创建、管理和切换多个独立的会话(Session)、窗口(Window)和面板(Pane)。tmux 的核心优势在于其会话持久化能力,即使终端关闭或网络断开,您在 tmux 中运行的任务也能继续在后台执行,随时可以重新连接并恢复工作。这对于远程开发、长时间运行任务以及提升终端工作效率至关重要。
核心概念
在使用 tmux 之前,理解以下三个核心概念至关重要:
- 会话 (Session):
tmux的最高层级。- 每个会话都是一个独立的工作空间,可以包含多个窗口。
- 可以有多个会话同时运行。
- 窗口 (Window):
- 每个会话可以包含多个窗口。
- 每个窗口都相当于一个独立的终端标签页。
- 面板 (Pane):
- 每个窗口可以进一步分割成多个面板。
- 每个面板都运行一个独立的 shell。
- 类似于在同一个终端窗口中分屏。
tmux 工作流程
典型的 tmux 工作流程包括以下步骤:
- 启动
tmux会话: 进入tmux环境。 - 在会话中工作: 创建窗口、分割面板,运行命令。
- 分离会话 (Detach): 暂时离开
tmux环境,但会话仍在后台运行。 - 重新连接会话 (Attach): 重新进入之前分离的
tmux会话,恢复工作。
tmux 基本指令
tmux 的所有操作都通过一个前缀键 (Prefix Key) 加上一个命令键来完成。 默认前缀键: Ctrl + b。 这意味着:您需要先按下 Ctrl + b,然后松开,再按下后续的命令键。
一、会话 (Session) 管理
| 指令 | 作用 | 备注 |
|---|---|---|
tmux | 启动一个新的 tmux 会话。如果当前没有会话,则创建一个并连接。 | 最简单的启动方式。 |
tmux new -s [会话名称] | 启动一个带名称的新会话。例如:tmux new -s my_project。 | -s 指定会话名称。 |
tmux ls | 列出所有当前的 tmux 会话。 | tmux list-sessions 的简写。 |
tmux attach -t [会话名称] | 重新连接到指定名称的会话。例如:tmux attach -t my_project。 | -t 指定目标会话。如果只有一个会话,直接 tmux attach 即可。 |
Prefix + d | 分离 (Detach) 当前的 tmux 会话。会话在后台继续运行。 | 最常用操作之一,用于退出 tmux 环境而不终止会话。 |
tmux kill-session -t [会话名称] | 杀死(结束)指定名称的会话。 | 请谨慎使用,会话中的所有进程都会被终止。 |
tmux kill-server | 杀死所有 tmux 会话和服务器。 | 极少使用,除非您需要彻底清理 tmux 环境。 |
二、窗口 (Window) 管理 (前缀键 Ctrl + b + 命令键)
| 指令 | 作用 | 备注 |
|---|---|---|
Prefix + c | 创建一个新的窗口。 | 新窗口会显示一个新的 shell。 |
Prefix + n | 切换到下一个窗口。 | n for next。 |
Prefix + p | 切换到上一个窗口。 | p for previous。 |
Prefix + <数字键> | 切换到指定编号的窗口(例如 Prefix + 0 切换到第一个窗口)。 | 窗口编号从 0 开始。 |
Prefix + , | 重命名当前窗口。 | 底部状态栏会提示您输入新名称。 |
Prefix + w | 选择窗口。会弹出一个交互式列表,显示所有会话和窗口。 | w for window。您可以使用方向键选择,回车确认。 |
Prefix + & | 关闭当前窗口。 | 会提示确认,y 确认,n 取消。 |
三、其他常用指令 (前缀键 Ctrl + b + 命令键)
| 指令 | 作用 | 备注 |
|---|---|---|
Prefix + [ | 进入复制模式。允许您向上滚动查看历史输出,并复制文本。 | 进入后,可以使用方向键滚动,Space 开始选择,Enter 复制。 |
Prefix + ] | 粘贴 tmux 内部剪贴板中的内容。 | |
Prefix + ? | 显示所有 tmux 快捷键的帮助信息。 | |
Prefix + t | 显示一个大时钟。 |
常用场景示例
- 长时间运行任务:
tmux new -s my_build(启动会话)- 运行
npm install或git clone等耗时操作。 Ctrl + b + d(分离会话)- 关闭终端或断开 SSH 连接。
- 稍后回来,
tmux attach -t my_build即可查看任务进度。
- 分屏工作:
tmux(启动会话)Ctrl + b + "(垂直分割面板)Ctrl + b + %(水平分割面板)Ctrl + b + 方向键(在不同面板间切换)- 一个面板运行代码编辑器,一个面板运行服务器,一个面板查看日志。
- 多项目管理:
tmux new -s project_alpha- 在
project_alpha中工作。 Ctrl + b + d(分离project_alpha)tmux new -s project_beta- 在
project_beta中工作。 Ctrl + b + d(分离project_beta)tmux ls(查看所有会话)tmux attach -t project_alpha(重新连接到project_alpha)
tmux 配置 (~/.tmux.conf)
tmux 可以通过编辑用户主目录下的配置文件 ~/.tmux.conf 进行高度定制,以适应个人工作习惯。常见的定制包括:
- 更改前缀键: 许多用户将前缀键从默认的
Ctrl + b改为Ctrl + a。# ~/.tmux.conf unbind C-b set-option -g prefix C-a bind-key C-a send-prefix - 启用鼠标支持: 允许使用鼠标点击切换面板、调整大小、滚动。
# ~/.tmux.conf set -g mouse on - 状态栏美化: 自定义底部状态栏显示的信息和颜色,使其更具信息量和个性化。
示例

图中,[2]表示会话编号或会话名称。0:bash,1:2,2:666表示存在三个窗口,窗口编号分别为0,1,2;窗口名称分别为bash,2,666。*表示当前所处的为窗口0。
