本文最后更新于:2025年11月24日 晚上
tmux 是一个 terminal multiplexer(终端复用器),它可以启动一系列终端会话,本文介绍 tmux 使用方法。
简介
窗口与会话
讲解使用之前,我们需要先搞清楚窗口与会话的概念。
-
命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。
-
会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。
-
简单来说
- 窗口:终端打开的一个tab
- 会话:终端里面所操作的命令、启动的服务等
tmux 是什么
tmux 是一个 终端复用器(terminal multiplexer),它可以启动一系列终端会话。
我们使用命令行时,打开一个终端窗口,,会话开始,执行某些命令如npm run dev,关闭此终端窗口,会话结束,npm run dev服务会话随之被关闭。有时我们希望我们运行的服务如npm run dev 或者一些cd命令等,被保留,而不是关闭窗口再打开后,重新手动执行。tmux的主要用途就在于此。
- tmux 解绑了会话和终端窗口。关闭终端窗口再打开,会话并不终止,而是继续运行在执行。将会话与终端窗后彻底分离。
- tmux使用c语言实现的,可运行在OpenBSD, FreeBSD, NetBSD, Linux, OS X, Solaris上。
- 项目地址:https://github.com/tmux/tmux
相比于普通终端的优势
-
它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
-
它可以让新窗口"接入"已经存在的会话。
-
它允许每个会话有多个连接窗口,因此可以多人实时共享会话。
-
它还支持窗口任意的垂直和水平拆分。
工具安装
安装方法一
1 | |
安装方法二
1 | |
会话控制
启动 tumx
1 | |
在终端窗口上,运行tmux,其实就打开了一个终端与tmux服务的会话。只不过我们可以在tmux会话上层,再次输入’会话‘命令,使tmux上层运行的’会话’与终端窗口进行分离。这里面tmux其实可以称之为伪窗口(它其实是会话)。
- 启动tmux后,底部[0] 表示第0个tmux伪窗口,再启动一个tmux伪窗口,则为[1],依次递增。

1 | |
- 底部不再是数字,而是命名的名字
例如:
1 | |

退出会话
按下Ctrl+d或者显式输入exit命令,就可以退出 Tmux 窗口。
分离会话
在 Tmux 窗口中,按下Ctrl+b d或者输入tmux detach命令,就会将当前会话与窗口分离。
1 | |
承接刚刚的示例:

查看会话
执行tmux ls可看到当前所有的 tmux 伪窗口
1 | |
重接会话
tmux 工具的宝贵之处就在于会话可以重接
- 在我们已经执行
tmux detach关闭tmux伪窗口后,可以使用如下命令重新接入之前的会话
1 | |
杀死会话
有时候我们想彻底关闭某个会话,不想让其再执行,怎么操作?
1 | |
切换会话
1 | |
重命名会话
1 | |
窗格操作
Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。
划分窗格
tmux split-window命令用来划分窗格。
1 | |

移动光标
tmux select-pane命令用来移动光标位置。
1 | |
交换窗格位置
tmux swap-pane命令用来交换窗格位置。
1 | |

窗口管理
除了将一个窗口划分成多个窗格,Tmux 也允许新建多个窗口。
新建窗口
tmux new-window命令用来创建新窗口。
1 | |
新建窗口后左下角可以看到多个选项卡,星号表示当前所在窗口

切换窗口
tmux select-window命令用来切换窗口。
1 | |
重命名窗口
tmux rename-window命令用于为当前窗口起名(或重命名)。
1 | |
其他命令
1 | |
快捷键
Tmux 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。
系统操作
| 按键 | 含义 |
|---|---|
| ? | 列出所有快捷键;按q返回 |
| d | 脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话 |
| D | 选择要脱离的会话;在同时开启了多个会话时使用 |
| Ctrl+z | 挂起当前会话 |
| r | 强制重绘未脱离的会话 |
| s | 选择并切换会话;在同时开启了多个会话时使用 |
| : | 进入命令行模式;此时可以输入支持的命令,例如kill-server可以关闭服务器 |
| [ | 进入复制模式;此时的操作与vi/emacs相同,按q/Esc退出 |
| ~ | 列出提示信息缓存;其中包含了之前tmux返回的各种提示信息 |
| $ | 重命名当前会话 |
窗口操作
| 按键 | 含义 |
|---|---|
| c | 创建一个新窗口,状态栏会显示多个窗口的信息 |
| & | 关闭当前窗口 |
| 数字键 | 切换到指定编号的窗口,数字对应状态栏上的窗口编号 |
| p | 切换至上一窗口 |
| n | 切换至下一窗口 |
| l | 在前后两个窗口间互相切换 |
| w | 通过窗口列表切换窗口 |
| , | 重命名当前窗口;这样便于识别 |
| . | 修改当前窗口编号;相当于窗口重新排序 |
| f | 在所有窗口中查找指定文本 |
窗格操作
| 按键 | 含义 |
|---|---|
| " | 将当前窗格平分为上下两块 |
| % | 将当前窗格平分为左右两块 |
| x | 关闭当前窗格 |
| ! | 将当前窗格置于新窗口;即新建一个窗口,其中仅包含当前窗格 |
| Ctrl+方向键 | 以1个单元格为单位移动边缘以调整当前窗格大小 |
| Alt+方向键 | 以5个单元格为单位移动边缘以调整当前窗格大小 |
| Space | 在预置的窗格布局中循环切换;依次包括even-horizontal、even-vertical、main-horizontal、main-vertical、tiled |
| q | 显示窗格编号 |
| o | 在当前窗口中选择下一窗格 |
| 方向键 | 移动光标以选择窗格 |
| { | 当前窗格与上一个窗格交换位置 |
| } | 当前窗格与下一个窗格交换位置 |
| Alt+o | 逆时针旋转当前窗口的窗格,所有窗格向后移动一个位置,最后一个窗格变成第一个窗格 |
| Ctrl+o | 顺时针旋转当前窗口的窗格,所有窗格向前移动一个位置,第一个窗格变成最后一个窗格 |
| ; | 光标切换到上一个窗格 |
| o | 光标切换到下一个窗格 |
| z | 当前窗格全屏显示,再使用一次会变回原来大小 |
查看历史记录
tmux 默认无法通过鼠标滚轮翻动历史记录, 很不方便.
鼠标滚轮
核心方法
修改 tmux 的 mouse 配置
默认情况下 mouse 配置 为 off
可以通过:
1 | |
来查看全局配置
1 | |
操作流程
在家目录创建 tmux 配置文件, .tmux.conf , 写入配置命令:
1 | |
两行的作用分别为:
- 开启鼠标滚轮滚动
- 历史记录行数由默认的 2000 改为 100000
应用配置:
1 | |
此时查看系统配置
1 | |
复制模式
按下 ctrl+B [ 进入复制模式, 边框会从绿色变为黄褐色
之后可以使用 pageup pagedown 键翻页, 也可以用上下方向键逐行翻页
退出复制模式: 按下 esc 或 q
参考资料
文章链接:
https://www.zywvvd.com/notes/system/linux/tmux-usage/tmux-usage/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付