blog

Welcome to my blog!

Tmux使用教程

ab's Avatar 2024-03-26 tool

  1. 1. 目录
  2. 2. 1.Tmux 是什么
    1. 2.1. 1.1 会话与进程
    2. 2.2. 1.2 Tmux 的作用
  3. 3. 2.基本用法
    1. 3.1. 2.1 Tmux 安装
    2. 3.2. 2.2 Tmux 启动与退出
    3. 3.3. 2.3 前缀键
  4. 4. 3.会话管理
    1. 4.1. 3.1 新建会话
    2. 4.2. 3.2 分离会话
    3. 4.3. 3.3 接入会话
    4. 4.4. 3.4 杀死会话
    5. 4.5. 3.5 切换会话
    6. 4.6. 3.6 重命名会话
    7. 4.7. 3.7 会话快捷键
  5. 5. 4.最简操作流程
  6. 6. 5.窗格操作
    1. 6.1. 5.1 划分窗格
    2. 6.2. 5.2 移动光标
    3. 6.3. 5.3 交换窗格位置
    4. 6.4. 5.4 窗格快捷键
  7. 7. 6.窗口管理
    1. 7.1. 6.1 新建窗口
    2. 7.2. 6.2 切换窗口
    3. 7.3. 6.3 重命名窗口
    4. 7.4. 6.4 窗口快捷键
  8. 8. 7.其他命令
  9. 9. 8.演示过程
  10. 10. 附录
    1. 10.1. 表一:系统指令
    2. 10.2. 表二:窗口(Window)指令
    3. 10.3. 表三:面板(Pane)指令
  11. 11. 参考链接

目录


1.Tmux 是什么

1.1 会话与进程

会话(session):用户与计算机之间的一种临时交互。

会话的核心特征在于窗口与其内启动的进程紧密相连。开启窗口意味着会话的开始;关闭窗口则标志着会话的结束,随之,会话中的进程不论是否执行完毕都将被终止。
SSH 远程登录计算机为例,若在执行命令时网络突然中断,重新登录后将无法找回先前的命令。这是因为之前的SSH会话已终止,其进程也随之消失。
为了克服这一挑战,可以实现会话与窗口的解绑:即使窗口关闭,会话也不会结束,而是继续运行,待需要时可重新绑定至其他窗口。

1.2 Tmux 的作用

Tmux:一个实现会话与窗口解绑的工具。

  • (1)支持在单一窗口内同时访问多个会话,适用于并行运行多个命令行程序。
  • (2)允许新窗口接入已存在会话
  • (3)支持每个会话拥有多个连接窗口,便于多人实时共享会话。
  • (4)提供灵活的窗口垂直和水平拆分功能。

2.基本用法

2.1 Tmux 安装

1
2
3
4
5
6
7
8
# 对于 Ubuntu 或 Debian
sudo apt-get install tmux

# 对于 CentOS 或 Fedora
sudo yum install tmux

# 对于 Mac
brew install tmux

2.2 Tmux 启动与退出

安装完成后,通过输入 tmux 命令即可进入 Tmux 窗口。

1
tmux

此命令将打开 Tmux 窗口,并在底部展示一个状态栏。状态栏左侧显示窗口信息(编号和名称),右侧显示系统信息。

按下 Ctrl+d 或输入 exit 命令即可退出 Tmux 窗口。

1
exit

2.3 前缀键

Tmux 窗口支持众多快捷键,所有快捷键均需通过前缀键激活。默认前缀键为 Ctrl+b,即首先按下 Ctrl+b,随后输入的快捷键才有效。

例如,显示帮助信息的快捷键是 Ctrl+b ?。在 Tmux 窗口中,先按 Ctrl+b,再按 ? 即可展示帮助信息。

ESC 键或 q 键退出帮助界面。


3.会话管理

3.1 新建会话

当首个 Tmux 窗口启动时,其编号为 0,随后启动的窗口编号依次增加。相应的会话也被称作 0 号会话、1 号会话等。

为了便于识别,推荐为会话命名:

1
tmux new -s <session-name>

以上命令新建一个带有指定名称的会话。

3.2 分离会话

在 Tmux 窗口中,通过按下 Ctrl+b d 或输入 tmux detach 命令可以实现当前会话与窗口的分离。

1
tmux detach

执行以上命令后,将退出当前 Tmux 窗口,但会话及其进程仍在后台运行。

使用 tmux ls 命令查看当前所有 Tmux 会话:

1
2
3
tmux ls
# 或者
tmux list-session

3.3 接入会话

tmux attach 命令允许重新接入某个已存在的会话。

  • 使用会话编号接入:

    1
    tmux attach -t 0
  • 使用会话名称接入:

    1
    tmux attach -t <session-name>

3.4 杀死会话

tmux kill-session 命令用于终止指定会话。

  • 使用会话编号杀死:

    1
    tmux kill-session -t 0
  • 使用会话名称杀死:

    1
    tmux kill-session -t <session-name>

3.5 切换会话

tmux switch 命令用于切换到另一个会话。

  • 使用会话编号切换:

    1
    tmux switch -t 0
  • 使用会话名称切换:

    1
    tmux switch -t <session-name>

3.6 重命名会话

tmux rename-session 命令允许为会话设置新名称。

1
tmux rename-session -t 0 <new-name>

以上命令将 0 号会话重命名。

3.7 会话快捷键

以下是一些与会话管理相关的快捷键操作:

  • Ctrl+b d:分离当前会话。
  • Ctrl+b s:列出所有会话。
  • Ctrl+b $:重命名当前会话。

4.最简操作流程

综上所述,以下是 Tmux 的最简操作流程:

  1. 新建会话:tmux new -s my_session
  2. 在 Tmux 窗口运行所需的程序。
  3. 按下快捷键 Ctrl+b d 将会话分离。
  4. 下次使用时,重新连接到会话:tmux attach-session -t my_session

5.窗格操作

Tmux 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmux 窗口中执行。

5.1 划分窗格

  • 划分上下两个窗格:tmux split-window
  • 划分左右两个窗格:tmux split-window -h

5.2 移动光标

  • 光标切换到上方窗格:tmux select-pane -U
  • 光标切换到下方窗格:tmux select-pane -D
  • 光标切换到左边窗格:tmux select-pane -L
  • 光标切换到右边窗格:tmux select-pane -R

5.3 交换窗格位置

  • 当前窗格上移:tmux swap-pane -U
  • 当前窗格下移:tmux swap-pane -D

5.4 窗格快捷键

  • Ctrl+b %:划分左右两个窗格。
  • Ctrl+b ":划分上下两个窗格。
  • Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key> 指向要切换到的窗格方向键。
  • Ctrl+b ;:光标切换到上一个窗格。
  • Ctrl+b o:光标切换到下一个窗格。
  • Ctrl+b {Ctrl+b }:当前窗格与相邻窗格交换位置。
  • Ctrl+b Ctrl+oCtrl+b Alt+o:所有窗格顺序调整。
  • Ctrl+b x:关闭当前窗格。
  • Ctrl+b !:将当前窗格拆分为一个独立窗口。
  • Ctrl+b z:当前窗格全屏显示,再按恢复。
  • Ctrl+b Ctrl+<arrow key>:调整窗格大小。
  • Ctrl+b q:显示窗格编号。

6.窗口管理

除了划分窗格,Tmux 也允许新建多个窗口。

6.1 新建窗口

  • 新建窗口:tmux new-window
  • 新建指定名称的窗口:tmux new-window -n <window-name>

6.2 切换窗口

  • 切换到指定编号的窗口:tmux select-window -t <window-number>
  • 切换到指定名称的窗口:tmux select-window -t <window-name>

6.3 重命名窗口

  • 为当前窗口起名或重命名:tmux rename-window <new-name>

6.4 窗口快捷键

  • Ctrl+b c:创建新窗口。
  • Ctrl+b pCtrl+b n:切换窗口。
  • Ctrl+b <number>:切换到指定编号的窗口。
  • Ctrl+b w:从列表中选择窗口。
  • Ctrl+b ,:窗口重命名。

7.其他命令

以下是一些额外的 Tmux 命令:

  • 列出所有快捷键:tmux list-keys
  • 列出所有 Tmux 命令及参数:tmux list-commands
  • 列出当前所有 Tmux 会话信息:tmux info
  • 重新加载 Tmux 配置:tmux source-file ~/.tmux.conf

8.演示过程

我们输入 tmux new -s work 创建一个 session:

可以看到后台已经启动了 tmux 的 server 进程,因此即使关闭你的 terminal,session 仍然在运行:

输入 prefix + d 可以分离 session(注意:一定要松开 prefix 再按 d):

如果想要重新连接已分离的 session,可以输入 tmux attach -t [session-name]。在上例中,session 名为 work,因此指令为 tmux attach -t work

若需重新命名 session,可以按下 prefix + $

要查看所有 session,可以按下 prefix + s

或者使用 tmux ls 查看所有 session:

一个 session 可以包含多个窗口。创建 session 时会默认生成一个窗口,使用 prefix + c 可以创建新窗口(每个窗口前面有编号,当前窗口标记为 *,上一个窗口标记为 -):

调整窗口:

  • prefix + p:切换到上一个窗口
  • prefix + n:切换到下一个窗口
  • prefix + <number>:跳转到指定编号的窗口

按下 prefix + w 可以显示所有窗口列表:

按下 prefix + , 可以为窗口命名,左下角会显示更改后的名字:

在窗口中可以进行分割,按下 prefix + " 可以水平分割,按下 prefix + % 可以垂直分割:

移动窗格:

  • prefix + <方向键>:按方向键移动
  • prefix + ;:切换到上一个窗格
  • prefix + o:切换到下一个窗格

要关闭当前窗格,可以按下 prefix + x

将窗格转换为窗口(pane -> window):按下 prefix + !,可以看到窗口数量增加:

要最大化窗格,可以按下 prefix + z,左下角会提示已最大化,再按一次可以恢复:

附录

表一:系统指令

前缀 指令 描述
Ctrl+b ? 显示快捷键帮助文档
Ctrl+b d 断开当前会话
Ctrl+b D 选择要断开的会话
Ctrl+b Ctrl+z 挂起当前会话
Ctrl+b r 强制重载当前会话
Ctrl+b s 显示会话列表用于选择并切换
Ctrl+b : 进入命令行模式,此时可直接输入命令
Ctrl+b [ 进入复制模式,按q退出
Ctrl+b ] 粘贴复制模式中复制的文本
Ctrl+b ~ 列出提示信息缓存

表二:窗口(Window)指令

前缀 指令 描述
Ctrl+b c 新建窗口
Ctrl+b & 关闭当前窗口(关闭前需输入y or n确认)
Ctrl+b 0~9 切换到指定窗口
Ctrl+b p 切换到上一窗口
Ctrl+b n 切换到下一窗口
Ctrl+b w 打开窗口列表,用于选择切换窗口
Ctrl+b , 重命名当前窗口
Ctrl+b . 修改当前窗口编号(适用于窗口重新排序)
Ctrl+b f 快速定位到窗口(输入关键字匹配窗口名称)

表三:面板(Pane)指令

前缀 指令 描述
Ctrl+b " 当前面板上下一分为二,下`
Ctrl+b Ctrl+方向键 以1个单元格为单位调整当前面板边缘(Mac下被系统快捷键覆盖)
Ctrl+b t 显示时钟

参考链接

本文最后更新于 天前,文中所描述的信息可能已发生改变