当前位置: 首页 > 工具软件 > .tmux > 使用案例 >

Tmux 使用教程

蒋泰
2023-12-01

一、概述

Tmux 是一个终端复用器terminal multiplexer),非常有用,属于常用的开发工具。

1、会话与进程

https://blog.csdn.net/matafeiyanll/article/details/109788874

会话的一个重要特点是,窗口与其中启动的进程连在一起的。打开窗口,会话开始关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。

2、Tmux 的作用

Tmux 就是会话与窗口的"解绑"工具,将它们彻底分离。

1、它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。
2、它可以让新窗口"接入"已经存在的会话
3、它允许每个会话多个连接窗口,因此可以多人实时共享会话。
4、它支持窗口任意垂直水平拆分。

3、其他说明

类似的终端复用器还有 GNU ScreenTmux 与它功能相似,但是更易用,也更强大。

二、tmux 用法

1、概要

tmux [-2CluvV] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [command [flags]]

2、描述

Tmux 是一种终端多路复用器:它允许从一个屏幕上创建访问控制多个终端。Tmux 可以从屏幕上分离出来,在后台继续运行,然后再重新连接

tmux 启动时,它会创建一个带有单个窗口新会话,并将其显示在屏幕上。屏幕底部的状态行显示当前会话的信息,用于输入交互式命令。

会话是 tmux 管理下的伪终端的单一集合。每个会话都有一个或多个窗口链接到它。一个窗口占据整个屏幕,可以被分割成矩形窗格,每个窗格都是一个单独的伪终端(pty(4)手册页记录了伪终端的技术细节)。任意数量的 tmux 实例都可以连接到同一个会话,并且同一会话中可能存在任意数量的窗口。一旦所有会话被杀死,tmux 退出。

每个会话都是持久的,并将在意外断开连接(例如ssh(1)连接超时)或有意分离(使用 ' C-b - d ' 键击)时存活。Tmux 可以使用以下方法重新连接:

tmux attach

tmux 中,一个会话由客户机显示在屏幕上,所有会话都由一个服务器管理。服务器和每个客户端是独立的进程,它们通过 /tmp 中的套接字进行通信。

选项如下:

  • -2:强制 tmux 假定终端支持 256 种颜色。
  • -C :以控制模式启动(请参阅控制模式一节)。给定两次(-CC)禁用回声。
  • -c shell-command:使用默认 shell 执行 shell-command。如果有必要,将启动 tmux 服务器以检索默认 shell 选项。当使用 tmux 作为登录 shell 时,此选项是为了与sh(1)兼容。
  • -f file:请指定可选的配置文件。默认情况下,tmux/etc/tmux.conf 加载系统配置文件,如果存在,然后在 ~/.tmux.conf 查找用户配置文件。配置文件是一组 tmux 命令,这些命令在服务器第一次启动时按顺序执行。当服务器进程启动时,Tmux 加载一次配置文件。source-file 命令可能用于以后加载一个文件。
  • -L socket-nametmux 将服务器套接字存储在 TMUX_TMPDIR 下的目录中,如果未设置则将其存储在 /tmp 下。默认的套接字名为 default。该选项允许指定不同的套接字名称,允许运行多个独立的 tmux服务器。与 -S 不同,不需要完整路径:套接字都是在同一个目录中创建的。
  • -l:表现为登录 shell 。此标志目前没有效果,是为了在使用 tmux 作为登录 shell 时与其他 shell 兼容。
  • -S socket-path指定服务器套接字的完整替代路径。如果指定了 -S,则不使用默认套接字目录,并且忽略任何-L 标志。
  • -u:启动时,tmux查找 LC_ALLLC_CTYPELANG 环境变量:如果第一个找到的变量包含 'UTF-8',则假定终端支持 UTF-8。这并不总是正确的:-u 标志显式地通知 tmux 支持 UTF-8。注意 tmux 本身总是接受 UTF-8;它控制是否将 UTF-8 字符发送到它正在运行的终端(如果不是,它们将被 '_' 替换)。
  • -v:要求详细的日志记录。日志消息将保存在当前目录下的 tmux-client-PID.logtmux-server-PID.log 文件中,其中 PID 为服务器或客户端进程的 PID。如果两次指定 -v,则生成一个额外的 tmux-out-pid.log 文件,其中包含 tmux 写入终端的所有内容的副本。
  • -V:报告 tmux 版本。
  • command [flags]:这指定用于控制 tmux 的一组命令中的一个,如下面的小节所述。如果没有指定命令,则假定使用 new-session 命令。

3、按键绑定

tmux 可以通过使用前缀键 'C-b' (Ctrl-b) 的组合键从连接的客户端控制,默认情况下,后面跟着一个命令键

默认的命令键绑定是:

  • C-b:将前缀密钥 (C-b) 发送到应用程序。
  • C-o:向前旋转当前窗口中的窗格。
  • C-z:挂起 tmux 客户端。
  • !:把当前的窗格从窗口打碎。
  • ":将当前窗格拆分为两个,顶部和底部。
  • #:列出所有的粘贴缓冲区。
  • $:重命名当前会话。
  • %:将当前窗格分为左窗格和右窗格。
  • &:关闭当前窗口。
  • ':提示要选择的窗口索引。
  • (:将附加的客户端切换到前一个会话。
  • ):将连接的客户端切换到下一个会话。
  • ,:重命名当前窗口。
  • -:删除最近复制的文本缓冲区。
  • .:提示移动当前窗口的索引。
  • 0~9:选择窗口 0~9
  • ::输入 tmux 命令提示符。
  • ;:移动到先前活动的窗格。
  • =:从列表中选择要交互粘贴的缓冲区。
  • ?:列出所有键绑定。
  • D:选择要分离的客户机。
  • L:将连接的客户端切换回上一个会话。
  • [:进入复制模式,复制文本或查看历史记录。
  • ]:粘贴最近复制的文本缓冲区。
  • c:创建一个新窗口。
  • d:分离当前客户端。
  • f:提示在打开的窗口中搜索文本。
  • i:显示当前窗口的一些信息。
  • l:移动到先前选择的窗口。
  • n:切换到下一个窗口。
  • o:选择当前窗口中的下一个窗格。
  • p:切换到前一个窗口。
  • q:简要显示窗格索引。
  • r:强制重绘附加的客户端。
  • m:标记当前窗格(参见 select-pane -m )。
  • M:清除已标记的窗格。
  • s:以交互方式为附加的客户机选择一个新会话。
  • t:显示时间。
  • w:交互式地选择当前窗口。
  • x:关闭当前窗格。
  • z:切换当前窗格的缩放状态。
  • {:将当前窗格与前一个窗格交换。
  • }:将当前窗格与下一个窗格交换。
  • ~:显示来自 tmux 的以前的消息(如果有的话)。
  • Page Up:进入复制模式,向上滚动一页。
  • UpDownLeftRight:更改到当前窗格的上面、下面、左边或右边。
  • M-1~M-5:按五种预设布局之一排列窗格:均匀水平、均匀垂直、主水平、主垂直或平铺。
  • Space:在下一个预设布局中排列当前窗口。
  • M-n:移动到下一个带有铃铛或活动标记的窗口。
  • M-o:向后旋转当前窗口中的窗格。
  • M-p:移动到带有铃铛或活动标记的前一个窗口。
  • C-UpC-DownC-LeftC-Right:在一个单元格的步骤中调整当前窗格的大小。
  • M-UpM-DownM-LeftM-Right:按五个单元格的步骤调整当前窗格的大小。

4、命令

注:通过 man tmux 查看帮助。

5、会话操作

1、新建会话

tmux new -s <session-name>

第一个启动的 Tmux 窗口,编号是0,第二个窗口的编号是 1,以此类推。使用编号区分会话,不太直观,更好的方法是为会话起名。

2、分离会话
Tmux 窗口中,按下 Ctrl+b d 或者输入 tmux detach 命令,就会将当前会话与窗口分离。

tmux detach

3、查看 Tmux 会话

tmux ls
# or
tmux list-session

4、接入会话
tmux attach 命令用于重新接入某个已存在的会话。

# 使用会话编号
tmux attach -t 0

# 使用会话名称
tmux attach -t <session-name>

5、杀死会话
tmux kill-session 命令用于杀死某个会话。

# 使用会话编号
tmux kill-session -t 0

# 使用会话名称
tmux kill-session -t <session-name>

6、切换会话
tmux switch 命令用于切换会话。

# 使用会话编号
tmux switch -t 0

# 使用会话名称
tmux switch -t <session-name>

7、重命名会话
tmux rename-session 命令用于重命名会话。

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

5、窗格操作

1、划分窗格

# 划分上下两个窗格
tmux split-window

# 划分左右两个窗格
tmux split-window -h

2、移动光标
tmux select-pane 命令用来移动光标位置。

# 光标切换到上方窗格
tmux select-pane -U

# 光标切换到下方窗格
tmux select-pane -D

# 光标切换到左边窗格
tmux select-pane -L

# 光标切换到右边窗格
tmux select-pane -R

3、交换窗格位置
tmux swap-pane 命令用来交换窗格位置。

# 当前窗格上移
tmux swap-pane -U

# 当前窗格下移
tmux swap-pane -D

4、窗格快捷键

Ctrl+b %:划分左右两个窗格。
Ctrl+b ":划分上下两个窗格。
Ctrl+b <arrow key>:光标切换到其他窗格。<arrow key>是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。
Ctrl+b ;:光标切换到上一个窗格。
Ctrl+b o:光标切换到下一个窗格。
Ctrl+b {:当前窗格与上一个窗格交换位置。
Ctrl+b }:当前窗格与下一个窗格交换位置。
Ctrl+b Ctrl+o:所有窗格向前移动一个位置,第一个窗格变成最后一个窗格。
Ctrl+b Alt+o:所有窗格向后移动一个位置,最后一个窗格变成第一个窗格。
Ctrl+b x:关闭当前窗格。
Ctrl+b !:将当前窗格拆分为一个独立窗口。
Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。
Ctrl+b Ctrl+<arrow key>:按箭头方向调整窗格大小。
Ctrl+b q:显示窗格编号。

6、窗口管理

1、新建窗口
tmux new-window 命令用来创建新窗口。

tmux new-window

# 新建一个指定名称的窗口
tmux new-window -n <window-name>

2、切换窗口
tmux select-window 命令用来切换窗口。

# 切换到指定编号的窗口
tmux select-window -t <window-number>

# 切换到指定名称的窗口
tmux select-window -t <window-name>

3、重命名窗口
tmux rename-window 命令用于为当前窗口起名(或重命名)。

tmux rename-window <new-name>

4、窗口快捷键

Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。
Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。
Ctrl+b n:切换到下一个窗口。
Ctrl+b <number>:切换到指定编号的窗口,其中的<number>是状态栏上的窗口编号。
Ctrl+b w:从列表中选择窗口。
Ctrl+b ,:窗口重命名。
 类似资料: