命令行手册

Man » tmux 在线手册 - tmux man 页面的详细在线文档

🌍
tmux — 终端复用器

概要

tmux [-2CDhlNuVv] [-c shell-command] [-f file] [-L socket-name] [-S socket-path] [-T features]
[命令 [标志]]

描述

tmux 是一个终端复用器:它允许从单个屏幕创建、访问和控制多个终端。tmux 可以从屏幕上分离并继续在后台运行,然后稍后重新连接。

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

会话是 tmux 管理下的一组伪终端。每个会话都有一个或多个与之关联的窗口。窗口占据整个屏幕,并且可以分成矩形窗格,每个窗格都是一个单独的伪终端(pty(4) 手册页记录了伪终端的技术细节)。任何数量的 tmux 实例都可以连接到同一个会话,并且任何数量的窗口都可以存在于同一个会话中。一旦所有会话都被终止,tmux 就会退出。

每个会话都是持久的,并且可以承受意外断开连接(例如 ssh(1) 连接超时)或有意的分离(通过“C-b d”按键)。可以使用以下命令重新连接 tmux:

$ tmux attach

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

选项如下:

-2 强制 tmux 假定终端支持 256 色。这等效于 -T 25。

-C 以控制模式启动(参见“控制模式”部分)。如果使用两次(-CC),则禁用回显。

-c shell-command
使用默认 shell 执行 shell-command。如果需要,tmux 服务器将被启动以检索 default-shell 选项。此选项用于与 [sh]({filename}../../sh)(1) 兼容,当 tmux 用作登录 shell 时。

-D 不要将 tmux 服务器作为守护进程启动。这还会关闭 exit-empty 选项。如果使用 -D,则不能指定命令。

-f file 指定替代配置文件。默认情况下,tmux 会加载系统配置文件 /etc/tmux.conf(如果存在),然后查找用户配置文件 ~/.tmux.conf 或 $XDG_CONFIG_HOME/tmux/tmux.conf。

配置文件是一组 tmux 命令,这些命令按顺序执行 当服务器首次启动时。tmux 在服务器进程启动时加载配置文件一次。可以使用 source-file 命令稍后加载文件。


tmux 将配置文件的命令中产生的任何错误消息显示在第一个创建的会话中,并继续处理剩余的配置文件。

-h            打印用法信息并退出。

-L socket-name
tmux 将服务器套接字存储在 TMUX_TMPDIR 或 /tmp 目录下的一个目录中(如果未设置)。默认套接字名为 default。此选项允许指定不同的套接字名称,从而可以运行多个独立的 tmux 服务器。与 -S 不同,不需要指定完整路径:所有套接字都创建在 `tmux-UID` 目录中,该目录位于给定的 TMUX_TMPDIR 目录或 /tmp 目录中。`tmux-UID` 目录由 tmux 创建,并且不能被世界读取、写入或执行。

如果套接字被意外删除,可以向 tmux 服务器进程发送 SIGUSR1 信号来重新创建它(请注意,如果任何父目录缺失,这将失败)。

-l            像登录 shell 一样运行。此标志当前没有效果,是为了与使用 tmux 作为登录 shell 的其他 shell 兼容。

-N            即使命令通常会启动服务器,也不要启动服务器(例如,对于 `new-session` 或 `start-server` 命令)。

-S socket-path
指定服务器套接字的完整替代路径。如果指定了 -S,则不使用默认套接字目录,并且任何 -L 标志都将被忽略。

-T features   设置客户端的终端特性。这是一个逗号分隔的特性列表。请参阅 terminal-features 选项。

-u            即使 `LC_ALL`、`LC_CTYPE` 或 `LANG` 的第一个已设置的环境变量不包含 "UTF-8" 或 "UTF8",也向终端写入 UTF-8 输出。

-V            报告 tmux 版本。

-v            请求详细日志。日志消息将保存到当前目录中的 `tmux-client-PID.log` 和 `tmux-server-PID.log` 文件中,其中 PID 是服务器或客户端进程的 PID。如果指定了两次 -v,则还会生成一个额外的 `tmux-out-PID.log` 文件,其中包含 tmux 写入终端的所有内容。

可以将 SIGUSR2 信号发送到 tmux 服务器进程,以在开启(就像指定了 -v 一样)和关闭日志之间切换。

command [flags]
这指定了一组用于控制 tmux 的命令,如下面的部分中描述。如果未指定任何命令,则假定为 `default-client-command` 中的命令,默认情况下为 `new-session`。

默认键绑定

可以通过使用前缀键(默认为 'C-b',即 Ctrl-b)后跟命令键,从连接的客户端控制 tmux。

默认命令键绑定如下:

C-b         将前缀键(C-b)发送到应用程序。
C-o         将当前窗口中的窗格向前旋转。
C-z         暂停 tmux 客户端。
!           将当前窗格从窗口中分离出来。
"           将当前窗格分为上下两个窗格。
#           列出所有粘贴缓冲区。
$           重命名当前会话。
%           将当前窗格分为左右两个窗格。
&           关闭当前窗口。
'           提示输入窗口索引以选择。
(           将连接的客户端切换到上一个会话。
)           将连接的客户端切换到下一个会话。
,           重命名当前窗口。
-           删除最近复制的文本缓冲区。
.           提示输入索引以移动当前窗口。
0to 9      选择窗口 0 到 9。
:           进入 tmux 命令提示符。
;           移动到先前活动的窗格。
=           从列表中交互式选择要粘贴的缓冲区。
?           列出所有键绑定。
D           选择要分离的客户端。
L           将连接的客户端切换回最后一个会话。
[           进入复制模式以复制文本或查看历史记录。
]           粘贴最近复制的缓冲区。
c           创建一个新窗口。
d           分离当前客户端。
f           提示搜索开放窗口中的文本。
i           显示有关当前窗口的一些信息。
l           移动到先前选择的窗口。
m           标记当前窗格(请参阅 `select-pane -m`)。
M           清除标记的窗格。
n           更改为下一个窗口。
o           选择当前窗口中的下一个窗格。
p           更改为上一个窗口。
q           简要显示窗格索引。
r           强制重新绘制连接的客户端。
s           交互式选择新的会话。
t           显示时间。
w           交互式选择当前窗口。
x           关闭当前窗格。
z           切换当前窗格的缩放状态。
{           将当前窗格与上一个窗格交换。
}           将当前窗格与下一个窗格交换。
~           显示 tmux 的先前消息(如果有)。
Page Up     进入复制模式并向上滚动一页。
Up, Down
Left, Right
更改为当前窗格上方、下方、左侧或右侧的窗格。
M-1 to M-7  以七个预设布局中的一个排列窗格:even-horizontal、even-vertical、main-horizontal、main-horizontal-mirrored、main-vertical、main-vertical-mirrored 或 tiled。
Space       将当前窗口排列在下一个预设布局中。
M-n         移动到下一个带有铃声或活动标记的窗口。
M-o         将当前窗口中的窗格向后旋转。
M-p         移动到上一个带有铃声或活动标记的窗口。
C-Up, C-Down
C-Left, C-Right
以一步的增量调整当前窗格的大小。
M-Up, M-Down
M-Left, M-Right
以五步的增量调整当前窗格的大小。

可以使用 bind-keyunbind-key 命令更改按键绑定。

命令解析和执行

tmux 支持大量的命令,可用于控制其行为。 每个命令都有一个名称,可以接受零个或多个标志和参数。 它们可以绑定到某个按键,使用 `bind-key` 命令,或者从 shell 提示符、shell 脚本、配置文件或命令提示符中运行。 例如,以下是从 shell 提示符、`~/.tmux.conf` 中运行以及绑定到按键的相同 `set-option` 命令:

$ tmux set-option -g status-style bg=cyan

set-option -g status-style bg=cyan

bind-key C set-option -g status-style bg=cyan

这里,命令名称是‘set-option’,‘-g’是一个标志,‘status-style’和‘bg=cyan’是参数。

tmux 区分命令解析和执行。为了执行一个命令,tmux 需要将其分解为它的名称和参数。这就是命令解析。如果命令是从 shell 中运行,则 shell 会解析它;如果命令是从 tmux 内部或从配置文件中运行,则 tmux 会解析它。以下是一些 tmux 解析命令的例子:

- 在配置文件中;
- 在命令提示符处输入(参见 command-prompt);
- 传递给 bind-key;
- 传递给 if-shell 或 confirm-before。

为了执行命令,每个客户端都有一个“命令队列”。一个全局命令队列,它不附加到任何客户端,用于启动时,用于像 ~/.tmux.conf 这样的配置文件。添加到队列中的已解析命令将按顺序执行。一些命令,比如 if-shell 和 confirm-before,会解析它们的参数来创建一个新的命令,该命令会立即插入到它们之后。这意味着参数可能会被解析两次或更多次——第一次是在父命令(例如 if-shell)被解析时,第二次是在它解析和执行其命令时。像 if-shell、run-shell 和 display-panes 这样的命令会停止执行队列中的后续命令,直到发生某些事情:if-shell 和 run-shell 直到 shell 命令完成,display-panes 直到按下某个键。 例如,以下命令:

new-session; new-window
if-shell "true" "split-window"
kill-session

将按以下顺序执行:new-session、new-window、if-shell、shell 命令 true(1)、split-window 和 kill-session。

“命令”部分列出了 tmux 命令及其参数。

解析语法

本节描述了 tmux 解析的命令的语法,例如在配置文件中或在命令提示符处。请注意,当命令输入到 shell 中时,它们由 shell 解析——参见例如 ksh(1) 或 csh(1)。

每个命令以换行符或分号(;)结尾。用分号分隔的命令一起构成一个“命令序列”——如果序列中的一个命令遇到错误,则不会执行后续的命令。

建议将用作命令分隔符的分号写成一个单独的标记,例如从 sh(1):

$ tmux neww \; splitw

或者:

$ tmux neww ';' splitw

或者从 tmux 命令提示符:


neww ; splitw

但是,尾随的冒号也被解释为命令分隔符,例如在以下 sh(1) 命令中:

$ tmux neww\; splitw

或者:

$ tmux 'neww;' splitw

如这些示例所示,从 shell 运行 tmux 时,必须格外小心地正确引用分号:

      应根据 shell 约定转义作为命令分隔符的分号。 对于 [sh]({filename}../../sh)(1),这通常意味着使用引号(例如‘neww \; splitw’)或转义(例如‘neww \\; splitw’)。

      应双重转义作为单个字符或尾随字符的分号,以便将其解释为参数:首先根据 shell 约定进行转义,然后再次转义以供 tmux 使用;例如:

$ tmux neww 'foo\;' bar
$ tmux neww foo\\\; bar

      不作为单个字符或尾随其他字符的分号,只需根据 shell 约定进行一次转义;例如:

$ tmux neww 'foo-;-bar'
$ tmux neww foo-\;-bar

注释由未引用的 # 字符标记 - 任何剩余的文本在注释之后都会被忽略,直到行尾。

如果行的最后一个字符是 \,则该行将与下一行连接(\ 和换行符将被完全删除)。 这称为行继续,适用于引号内和引号外以及在注释中,但不适用于花括号内。

命令参数可以指定为用单引号 (') 或双引号 (") 括起来的字符串,或者用花括号 ({}) 括起来的命令列表。 当参数包含任何特殊字符时,这是必需的。 单引号和双引号字符串不能跨多行,除非使用行继续。 花括号可以跨多行。

在引号外部和双引号内部,将执行以下替换:

-   以 $ 开头的环境变量将被替换为来自全局环境的值(请参阅“全局和会话环境”部分)。

-   以 ~ 或 ~user 开头的字符串将被扩展为当前用户或指定用户的家目录。

-   \uXXXX 或 \uXXXXXXXX 将被替换为给定的四位或八位十六进制数字对应的 Unicode 代码点。

-   如果以 \(转义)开头,则以下字符将被替换:\e 替换为转义字符;\r 替换为回车;\n 替换为换行符;\t 替换为制表符。

-   \ooo 将被替换为具有八进制值 ooo 的字符。 需要三个八进制数字,例如 \001。 最大的有效字符是 \377。

-   任何以 \ 开头的其他字符将被替换为自身(即,删除 \),并且不被视为具有任何特殊含义 - 因此,例如 \; 不会将标记为命令序列,并且 \$ 不会扩展环境变量。

花括号被解析为配置文件(因此,诸如“%if”之类的条件将被处理),然后转换为字符串。 它们旨在避免在传递一组 tmux 命令作为参数时(例如传递给 if-shell),无需进行额外的转义。 以下两个示例产生相同的命令 - 请注意,在使用 {} 时不需要转义:


if-shell true {
display -p 'brace-dollar-foo: }$foo'
}

if-shell true "display -p 'brace-dollar-foo: }\$foo'"

花括号可以嵌套在花括号内,例如:

bind x if-shell "true" {
if-shell "true" {
display "true!"
}
}

环境变量可以使用“name=value”的语法来设置,例如“HOME=/home/user”。 在解析期间设置的变量会添加到全局环境中。 可以使用“%hidden”设置隐藏变量,例如:

%hidden MYVAR=42

隐藏变量不会传递到 tmux 创建的进程的环境中。 请参阅“全局和会话环境”部分。

可以使用“%if”、“%elif”、“%else”和“%endif”将命令包围起来,以进行条件解析。 “%if”和“%elif”的参数将作为格式进行扩展(参见“格式”),如果其结果为假(零或空),则会忽略随后的文本,直到遇到闭合的“%elif”、“%else”或“%endif”。 例如:

%if "#{==:#{host},myhost}"
set -g status-style bg=red
%elif "#{==:#{host},myotherhost}"
set -g status-style bg=green
%else
set -g status-style bg=blue
%endif

如果正在运行在“myhost”上,这将更改状态行颜色为红色;如果正在运行在“myotherhost”上,则更改为绿色;否则,更改为蓝色。 条件语句可以放在同一行中,例如:

%if #{==:#{host},myhost} set -g status-style bg=red %endif

命令

本节描述了 tmux 支持的命令。 大多数命令都接受可选的 -t(有时是 -s)参数,参数值为 target-client、target-session、target-window 或 target-pane 中的一个。 这些参数指定命令应影响的客户端、会话、窗口或面板。

target-client 应为客户端的名称,通常是客户端连接的 pty(4) 文件,例如 /dev/ttyp1 或 ttyp1。 如果未指定客户端,tmux 会尝试确定当前使用的客户端;如果失败,则会报告错误。 可以使用 list-clients 命令列出客户端。

target-session 按以下顺序进行尝试:

一个以 $ 开头的会话 ID。

      会话的精确名称(如 list-sessions 命令中所示)。

      会话名称的开头,例如“mysess”将匹配一个名为“mysession”的会话。

一个 glob(7) 模式,该模式与会话名称匹配。

如果会话名称以“=”开头,则仅接受精确匹配(因此,“=mysess”仅匹配精确的“mysess”,而不匹配“mysession”)。

如果找到单个会话,则将其用作目标会话;多个匹配项会产生错误。 如果省略会话,则使用当前会话(如果可用);如果没有可用的当前会话,则选择最近使用的会话。


target-window (或 src-window 或 dst-window) 指定一个窗口,格式为 session:window。
session 的规则与 target-session 相同,window 的查找顺序如下:

一个特殊标记,如下列所示。

一个窗口索引,例如 'mysession:1' 是 session 'mysession' 中的窗口 1。

一个窗口 ID,例如 @1。

    一个确切的窗口名称,例如 'mysession:mywindow'。

    窗口名称的开头,例如 'mysession:mywin'。

    一个 glob(7) 模式,与窗口名称进行匹配。

与 session 类似,'=' 前缀将仅执行完全匹配。 空窗口名称指定下一个未使用的索引(如果适用,例如 new-window 和 link-window 命令),否则选择会话中的当前窗口。

以下特殊标记可用于指示特定窗口。 每个都有一个单字符的替代形式。

标记              含义
{start}       ^    编号最低的窗口
{end}         $    编号最高的窗口
{last}        !    最后一个(先前当前)窗口
{next}        +    下一个窗口(按编号)
{previous}    -    前一个窗口(按编号)

target-pane(或 src-pane 或 dst-pane)可以是面板 ID,也可以采用与 target-window 类似的格式,但可以选择性地添加一个句点,后跟一个面板索引或面板 ID,例如:'mysession:mywindow.1'。 如果省略面板索引,则使用指定窗口中当前活动的面板。 以下特殊标记可用于面板索引:

标记                  含义
{last}            !    最后一个(先前活动)面板
{next}            +    下一个面板(按编号)
{previous}        -    前一个面板(按编号)
{top}                  顶部面板
{bottom}               底部面板
{left}                 最左侧面板
{right}                最右侧面板
{top-left}             左上角面板
{top-right}            右上角面板
{bottom-left}          左下角面板
{bottom-right}         右下角面板
{up-of}                当前活动面板上方的面板
{down-of}              当前活动面板下方的面板
{left-of}              当前活动面板左侧的面板
{right-of}             当前活动面板右侧的面板

标记“+”和“-”可以后跟一个偏移量,例如:

select-window -t:+2

此外,target-session、target-window 或 target-pane 可以完全由标记“{mouse}”(替代形式 '=') 组成,以指定发生最新鼠标事件的会话、窗口或面板,或者由标记“{marked}”(替代形式 '~')组成,以指定标记的面板(请参阅 select-pane -m)。

会话、窗口和面板都使用唯一的 ID 编号;会话 ID 以“$”为前缀,窗口 ID 以“@”为前缀,面板 ID 以“%”为前缀。 这些是唯一的,并且在 tmux 服务器的生命周期中不会更改。 面板 ID 会传递给面板的子进程,作为 TMUX_PANE 环境变量。 可以使用“session_id”、“window_id”或“pane_id”格式(请参阅“FORMATS”部分)以及 display-message、list-sessions、list-windows 或 list-panes 命令来显示 ID。

shell-command 参数是 sh(1) 命令。这可以是一个传递给 shell 的单个参数,例如:

new-window 'vi ~/.tmux.conf'

这将运行:

/bin/sh -c 'vi ~/.tmux.conf'

此外,new-windownew-sessionsplit-windowrespawn-windowrespawn-pane 命令允许将 shell-command 作为多个参数提供,并直接执行(无需使用 sh -c)。这可以避免 shell 引号问题。例如:

$ tmux new-window vi ~/.tmux.conf

这将直接运行 vi(1),而无需调用 shell。

^ ommand [argument ...] 指的是 tmux 命令,可以单独作为命令和参数传递,例如:

bind-key F1 set-option status off

或者作为单个字符串参数传递到 .tmux.conf 中,例如:

bind-key F1 { set-option status off }

示例 tmux 命令包括:

refresh-client -t/dev/ttyp2
rename-session -tfirst newname
set-option -wt:0 monitor-activity on
new-window ; split-window -d
bind-key R source-file ~/.tmux.conf \; \
display-message "source-file done"

或者从 sh(1):

$ tmux kill-window -t :1
$ tmux new-window \; split-window -d
$ tmux new-session -d 'vi ~/.tmux.conf' \; split-window -d \; attach

客户端和会话

tmux 服务器管理客户端、会话、窗口和面板。客户端连接到会话以与其交互,这可以在创建会话时通过 new-session 命令完成,或者稍后通过 attach-session 命令完成。每个会话都有一个或多个与其关联的窗口。窗口可以链接到多个会话,并且由一个或多个面板组成,每个面板都包含一个伪终端。创建、链接和其他操作窗口的命令在“窗口和面板”部分中介绍。

以下命令可用于管理客户端和会话:

attach-session [-dErx] [-c working-directory] [-f flags] [-t target-session]
(别名:attach)

如果从 tmux 外部运行,则连接到当前终端中的 target-sessiontarget-session 必须已经存在——要创建新的会话,请参见 new-session 命令(使用 -A 创建或连接)。如果从内部使用,则将当前连接的会话切换到 target-session。如果指定了 -d,则将任何其他连接到会话的客户端断开连接。如果给出了 -x,则向客户端的父进程发送 SIGHUP 信号,并断开客户端的连接,通常会导致客户端退出。-f 设置一个逗号分隔的客户端标志列表。这些标志是:


active-pane
客户端有一个独立的活动窗格

ignore-size
客户端不会影响其他客户端的大小

no-detach-on-destroy
如果会话被销毁时还有其他会话存在,则不要分离客户端

no-output
客户端在控制模式下不接收窗格输出

pause-after=seconds
窗格在控制模式下落后 seconds 后暂停输出

read-only
客户端是只读的

wait-exit
在控制模式下,等待一个空行输入后再退出

前缀“!”如果客户端已经连接,则会关闭该标志。-r 是 -f read-only,ignore-size 的别名。当客户端为只读时,只有绑定到 detach-client 或 switch-client 命令的键有效。具有 active-pane 标志的客户端允许独立选择活动窗格,而无需考虑窗口的活动窗格,该活动窗格由没有该标志的客户端使用。这只会影响光标位置和从客户端发出的命令;其他功能,如钩子和样式,将继续使用窗口的活动窗格。

如果没有启动服务器,attach-session 将尝试启动它;除非在配置文件中创建了会话,否则这将失败。

attach-session 的目标会话规则略有调整:如果 tmux 需要选择最近使用的会话,它将优先选择最近使用的未连接会话。

-c 将会设置会话的工作目录(用于新的窗口)为 working-directory。

如果使用 -E,则不会应用 update-environment 选项。

detach-client [-aP] [-E shell-command] [-s target-session] [-t target-client]
(别名:detach)
如果绑定到键,则分离当前客户端,或者分离使用 -t 指定的客户端,或者分离当前连接到使用 -s 指定的会话的所有客户端。-a 选项会杀死所有客户端,但保留使用 -t 指定的客户端。如果给出 -P,则向客户端的父进程发送 SIGHUP 信号,通常会导致其退出。使用 -E 时,运行 shell-command 以替换客户端。

has-session [-t target-session]
(别名:has)
如果指定的会话不存在,则报告错误并以 1 退出。如果会话存在,则以 0 退出。

kill-server
杀死 tmux 服务器和客户端,并销毁所有会话。

kill-session [-aC] [-t target-session]
销毁给定的会话,关闭与该会话关联的任何窗口,而不影响其他会话,并分离连接到该会话的所有客户端。如果给出 -a,则杀死所有会话,但保留指定的会话。-C 标志清除与会话关联的所有窗口中的警报(铃声、活动或静音)。

list-clients [-F format] [-f filter] [-t target-session]
(别名:lsc)
列出连接到服务器的所有客户端。-F 指定每行的格式,-f 指定筛选器。仅显示筛选器为真的客户端。请参见“格式”部分。如果指定了 target-session,则仅列出连接到该会话的客户端。

list-commands [-F format] [command]
(别名:lscm)

列出命令的语法,或者如果没有指定,则列出 tmux 支持的所有命令。

list-sessions [-F format] [-f filter]
(别名:ls)

列出服务器管理的所有会话。-F 指定每一行的格式,-f 指定一个过滤器。仅显示过滤器为真的会话。请参阅“FORMATS”部分。

lock-client [-t target-client]
(别名:lockc)

锁定目标客户端,请参阅 lock-server 命令。

lock-session [-t target-session]
(别名:locks)

锁定附加到目标会话的所有客户端。

new-session   [-AdDEPX]  [-c  start-directory]  [-e  environment]  [-f  flags]  [-F  format]  [-n
window-name] [-s session-name] [-t group-name]  [-x  width]  [-y  height]  [shell-command
[argument ...]]
(别名:new)

创建一个名为 session-name 的新会话。

新会话将附加到当前终端,除非指定了 -d。window-name 和 shell-command 分别是初始窗口的名称和要执行的 shell 命令。使用 -d 时,初始大小来自全局 default-size 选项;可以使用 -x 和 -y 指定不同的尺寸。'-' 使用当前客户端的尺寸(如果存在)。如果给定了 -x 或 -y,则会为会话设置 default-size 选项。-f 设置一个逗号分隔的客户端标志列表(请参阅 attach-session)。

如果从终端运行,则会保存所有 termios(4) 特殊字符,并在新会话的新窗口中使用。

-A 标志使 new-session 的行为类似于 attach-session,如果 session-name 已经存在;如果给定了 -A,则 -D 的行为类似于 attach-session 中的 -d,-X 的行为类似于 attach-session 中的 -x。

如果给定了 -t,则它指定一个会话组。同一组中的会话共享相同的窗口集——新窗口链接到组中的所有会话,并且任何关闭的窗口都从所有会话中删除。当前窗口和上一个窗口以及任何会话选项保持独立,并且组中的任何会话都可以被杀死,而不会影响其他会话。group-name 参数可以是:

现有组的名称,在这种情况下,新会话将添加到该组中;

现有会话的名称——新会话将添加到与该会话相同的组中,如果需要,则创建一个新组;

仅包含新会话的新组的名称。

-n 和 shell-command 在使用 -t 时无效。

-P 选项在创建后打印有关新会话的信息。默认情况下,它使用格式“\#{session\_name}:”,但可以使用 -F 指定不同的格式。

如果使用 -E,则不会应用 update-environment 选项。-e 的形式为“VARIABLE=value”,它为新创建的会话设置一个环境变量;可以多次指定。

refresh-client  [-cDLRSU]  [-A  pane:state]  [-B  name:what:format]  [-C  size]  [-f  flags]  [-l
[target-pane]] [-r pane:report] [-t target-client] [adjustment]
(别名:refresh)

如果绑定到按键,则刷新当前客户端,或者如果使用 -t 指定了一个客户端,则刷新单个客户端。如果指定了 -S,则仅更新客户端的状态行。

-U、-D、-L、-R 和 -c 标志允许更改大于客户端的窗口的可见部分。-U 将可见部分向上移动调整的行数,-D 向下移动,-L 向左移动调整的列数,-R 向右移动。-c 返回到自动跟踪光标。如果省略调整值,则使用 1。请注意,可见位置是客户端的属性,而不是窗口的属性,更改附加会话中的当前窗口将重置它。

-C 设置控制模式客户端的宽度和高度,或者设置控制模式客户端的窗口大小,大小必须是“widthxheight”或“window ID:widthxheight”,例如“80x24”或“@0:80x24”。-A 允许控制模式客户端触发面板上的操作。参数是一个面板 ID(以“%”开头),后跟一个冒号,然后是“on”、“off”、“continue”或“pause”之一。如果为“off”,tmux 将不会将该面板的输出发送到客户端,如果所有客户端都将该面板关闭,tmux 将停止从该面板读取数据。如果为“continue”,tmux 将恢复向面板发送输出,如果之前已暂停(手动或通过 pause-after 标志)。如果为“pause”,tmux 将暂停该面板。-A 可以多次提供,用于不同的面板。

-B 设置控制模式客户端的格式订阅。参数由冒号分隔为三个部分:name 是订阅的名称;what 是要订阅的项目类型;format 是格式。添加订阅后,格式的更改将通过 %subscription-changed 通知报告,最多每秒一次。如果仅提供名称,则删除订阅。what 可以为空,以仅检查附加会话的格式,也可以是以下之一:一个面板 ID,例如“%0”;“%*”表示附加会话中的所有面板;一个窗口 ID,例如“@0”;或“@*”表示所有窗口。

-f 设置一个逗号分隔的客户端标志列表,请参阅 attach-session。-r 允许控制模式客户端通过报告(例如 OSC 10 的响应)提供关于面板的信息。参数是一个面板 ID(以“%”开头),后跟一个冒号,然后是一个报告转义序列。

-l 从客户端请求剪贴板,使用 xterm(1) 转义序列。如果提供了 target-pane,则将剪贴板发送(以编码形式),否则将其存储在一个新的粘贴缓冲区中。

-L、-R、-U 和 -D 将窗口的可见部分向左、向右、向上或向下移动调整值,如果窗口大于客户端。-c 重置,以便位置跟随光标。请参阅 window-size 选项。

rename-session [-t target-session] new-name

(别名:rename) 将会话重命名为 new-name。

server-access [-adlrw] [user]

更改用户的访问权限或读/写权限。运行 tmux 服务器的用户(即所有者)和 root 用户无法更改,并且始终允许访问。


-a 和 -d 用于授予或撤销指定用户的访问权限。如果用户已附加,则 -d 标志将导致其客户端分离。

-r 和 -w 更改用户的权限:-r 使其客户端变为只读,-w 使其变为可写。-l 列出当前访问权限。

默认情况下,访问列表为空,并且 tmux 创建具有文件系统权限的套接字,从而阻止任何用户(以及 root 用户)访问。这些权限必须手动更改。务必小心,不要允许不受信任的用户进行访问,即使是只读访问。

show-messages [-JT] [-t target-client]
(别名:showmsgs)

显示服务器消息或信息。消息会被存储,最多存储到由 message-limit 服务器选项设置的限制。-J 和 -T 显示有关作业和终端的调试信息。

source-file [-Fnqv] [-t target-pane] path ...
(别名:source)

执行由 path 指定的一个或多个文件的命令(path 可以是 glob(7) 模式)。如果存在 -F,则 path 会被扩展为一种格式。如果给出 -q,则如果 path 不存在,则不会返回错误。使用 -n,文件将被解析但不会执行任何命令。-v 显示已解析的命令和行号(如果可能)。

start-server
(别名:start)

启动 tmux 服务器(如果尚未运行),而不创建任何会话。

请注意,由于默认情况下,如果没有会话,tmux 服务器将退出,因此这只有在以下情况下才有用:在 ~/.tmux.conf 中创建了会话、关闭了 exit-empty,或者在同一命令序列中运行另一个命令。例如:

$ tmux start \; show -g

suspend-client [-t target-client]
(别名:suspendc)

通过发送 SIGTSTP(tty 停止)来暂停客户端。

switch-client [-ElnprZ] [-c target-client] [-t target-session] [-T key-table]
(别名:switchc)

将客户端 target-client 的当前会话切换到 target-session。作为一种特殊情况,-t 可以引用一个窗格(一个包含“:”、“.”或“%”的目标),以更改会话、窗口和窗格。在这种情况下,-Z 会在窗口缩放时保持缩放状态。如果使用 -l、-n 或 -p,则客户端将被移动到最后一个、下一个或上一个会话。-r 切换客户端的只读和 ignore-size 标志(请参阅 attach-session 命令)。

如果使用 -E,则不会应用 update-environment 选项。

-T 设置客户端的键表;来自客户端的下一个键将被解释为来自 key-table。这可用于配置多个前缀键,或将命令绑定到一系列键。例如,要使键入“abc”运行 list-keys 命令:

bind-key -Ttable2 c list-keys
bind-key -Ttable1 b switch-client -Ttable2
bind-key -Troot   a switch-client -Ttable1

窗口和窗格

tmux 显示的每个窗口可以拆分为一个或多个窗格;每个窗格占用显示器上的某个区域,并且是一个独立的终端。可以使用 split-window 命令将窗口拆分为窗格。窗口可以水平拆分(使用 -h 标志)或垂直拆分。可以使用 resize-pane 命令调整窗格的大小(默认情况下,绑定到“C-Up”、“C-Down”、“C-Left”和“C-Right”),可以使用 select-pane 命令更改当前窗格,并且可以使用 rotate-window 和 swap-pane 命令来交换窗格而不更改其位置。窗格的编号从零开始,按其创建的顺序排列。

在复制模式下,面板的右上角会显示一个指示器,指示当前位置和历史记录中的行数。

命令通过 `-X` 标志发送到 `send-keys` 命令,从而发送到复制模式。当按下键时,复制模式会自动使用两个键表之一,具体取决于 `mode-keys` 选项:`copy-mode` 用于 emacs,或者 `copy-mode-vi` 用于 vi。可以使用 `list-keys` 命令查看键表。

以下命令在复制模式中受支持:

    append-selection
    将选择附加到顶部粘贴缓冲区。

    append-selection-and-cancel (vi: A)
    将选择附加到顶部粘贴缓冲区并退出复制模式。

    back-to-indentation (vi: ^) (emacs: M-m)
    将光标移动到缩进处。

    begin-selection (vi: Space) (emacs: C-Space)
    开始选择。

    bottom-line (vi: L)
    移动到最后一行。

    cancel (vi: q) (emacs: Escape)
    退出复制模式。

    clear-selection (vi: Escape) (emacs: C-g)
    清除当前选择。

    copy-end-of-line [-CP] [prefix]
    从光标位置复制到行尾。`prefix` 用于命名新的粘贴缓冲区。

    copy-end-of-line-and-cancel [-CP] [prefix]
    从光标位置复制并退出复制模式。

    copy-pipe-end-of-line [-CP] [command] [prefix]
    从光标位置复制到行尾,并将文本通过管道传递给 `command`。`prefix` 用于命名新的粘贴缓冲区。

    copy-pipe-end-of-line-and-cancel [-CP] [command] [prefix]
    与 `copy-pipe-end-of-line` 相同,但也会退出复制模式。

    copy-line [-CP] [prefix]
    复制整行。

copy-line-and-cancel [-CP] [prefix]

复制整行并退出复制模式。

copy-pipe-line [-CP] [command] [prefix]

复制整行并将文本通过管道传递给命令。prefix 用于命名新的粘贴缓冲区。

copy-pipe-line-and-cancel [-CP] [command] [prefix]

与 copy-pipe-line 相同,但也会退出复制模式。

copy-pipe [-CP] [command] [prefix]

复制选定的内容,清除它,并将文本通过管道传递给命令。prefix 用于命名新的粘贴缓冲区。

copy-pipe-no-clear [-CP] [command] [prefix]

与 copy-pipe 相同,但不会清除选定的内容。

copy-pipe-and-cancel [-CP] [command] [prefix]

与 copy-pipe 相同,但也会退出复制模式。

copy-selection [-CP] [prefix]

复制当前选定的内容。

copy-selection-no-clear [-CP] [prefix]

与 copy-selection 相同,但不会清除选定的内容。

copy-selection-and-cancel [-CP] [prefix] (vi: Enter) (emacs: M-w)

复制当前选定的内容并退出复制模式。

cursor-down (vi: j) (emacs: Down)

将光标向下移动。

cursor-down-and-cancel

与 cursor-down 相同,但在到达底部时也会退出复制模式。

cursor-left (vi: h) (emacs: Left)

将光标向左移动。

cursor-right (vi: l) (emacs: Right)

将光标向右移动。

cursor-up (vi: k) (emacs: Up)

将光标向上移动。

cursor-centre-vertical (emacs: C-l)

将光标移动到窗格的垂直中心。

cursor-centre-horizontal (emacs: M-l)

将光标移动到窗格的水平中心。

end-of-line (vi: $) (emacs: C-e)

将光标移动到行尾。

goto-line line (vi: :) (emacs: g)

将光标移动到指定的行。

halfpage-down (vi: C-d) (emacs: M-Down)

向下滚动半页。

halfpage-down-and-cancel

与 halfpage-down 相同,但在到达底部时也会退出复制模式。

halfpage-up (vi: C-u) (emacs: M-Up)

向上滚动半页。

history-bottom (vi: G) (emacs: M->)

滚动到历史记录的底部。

history-top (vi: g) (emacs: M-<)

滚动到历史记录的顶部。

jump-again (vi: ;) (emacs: ;)

重复上次的跳转。

jump-backward to (vi: F) (emacs: F)

向后跳转到指定的文本。

jump-forward to (vi: f) (emacs: f)

向前跳转到指定的文本。

jump-reverse (vi: ,) (emacs: ,)

重复上次的跳转,方向相反(向前变为向后,向后变为向前)。

jump-to-backward to (vi: T)

向后跳转,但减少一个字符,将光标放在目标字符后面的字符上。

jump-to-forward to (vi: t)

向前跳转,但减少一个字符,将光标放在目标字符前面的字符上。

jump-to-mark (vi: M-x) (emacs: M-x)

跳转到上次标记的位置。

middle-line (vi: M) (emacs: M-r)

移动到中间行。

next-matching-bracket (vi: %) (emacs: M-C-f)

移动到下一个匹配的括号。

next-paragraph (vi: }) (emacs: M-})

移动到下一个段落。

next-prompt [-o]

移动到下一个提示符。

next-word (vi: w)

移动到下一个单词。

next-word-end (vi: e) (emacs: M-f)

移动到下一个单词的结尾。


next-space (vi: W)

与 next-word 相同,但使用单个空格作为单词分隔符。

next-space-end (vi: E)

与 next-word-end 相同,但使用单个空格作为单词分隔符。

other-end (vi: o)

切换光标位于所选内容的哪一端。

page-down (vi: C-f) (emacs: PageDown)

向下滚动一页。

page-down-and-cancel

与 page-down 相同,但如果到达底部则退出复制模式。

page-up (vi: C-b) (emacs: PageUp)

向上滚动一页。

pipe [命令]

将选定的文本管道传输到命令并清除选择。

pipe-no-clear [命令]

与 pipe 相同,但不清除选择。

pipe-and-cancel [命令] [前缀]

与 pipe 相同,但也会退出复制模式。

previous-matching-bracket (emacs: M-C-b)

移动到前一个匹配的括号。

previous-paragraph (vi: {) (emacs: M-{)

移动到前一个段落。

previous-prompt [-o]

移动到前一个提示符。

previous-word (vi: b) (emacs: M-b)

移动到前一个单词。

previous-space (vi: B)

与 previous-word 相同,但使用单个空格作为单词分隔符。

rectangle-on

打开矩形选择模式。

rectangle-off

关闭矩形选择模式。

rectangle-toggle (vi: v) (emacs: R)

切换矩形选择模式。

refresh-from-pane (vi: r) (emacs: r)

从面板中刷新内容。

scroll-bottom

滚动,直到当前行位于底部,同时将光标保持在该行上。

scroll-down (vi: C-e) (emacs: C-Down)

向下滚动。

scroll-down-and-cancel

与 scroll-down 相同,但如果光标到达底部,则退出复制模式。

scroll-middle (vi: z)

滚动,使当前行成为中间行,同时将光标保持在该行上。

scroll-top

滚动,直到当前行位于顶部,同时将光标保持在该行上。

scroll-up (vi: C-y) (emacs: C-Up)

向上滚动。

search-again (vi: n) (emacs: n)

重复上次搜索。

search-backward text (vi: ?)

向后搜索指定的文本。

search-backward-incremental text (emacs: C-r)

以增量方式向后搜索指定的文本。预计将与 command-prompt 命令的 -i 标志一起使用。

search-backward-text text

向后搜索指定的纯文本。

search-forward text (vi: /)

向前搜索指定的文本。

search-forward-incremental text (emacs: C-s)

以增量方式向前搜索指定的文本。预计将与 command-prompt 命令的 -i 标志一起使用。

search-forward-text text

向前搜索指定的纯文本。

search-reverse (vi: N) (emacs: N)

重复上次搜索,方向相反(向前变为向后,向后变为向前)。

select-line (vi: V)

选择当前行。

select-word

选择当前单词。

selection-mode [char | word | line]

更改选择模式。

set-mark (vi: X) (emacs: X)

标记当前行。

start-of-line (vi: 0) (emacs: C-a)

将光标移动到行首。

stop-selection

停止选择,但不清除当前选择。


toggle-position (vi: P) (emacs: P)

切换顶部右侧位置指示器的可见性。

top-line (vi: H) (emacs: M-R)

移动到顶部行。

搜索命令有几种变体:‘search-forward’ 和 ‘search-backward’ 搜索正则表达式;‘-text’ 变体搜索纯文本字符串,而不是正则表达式;‘-incremental’ 执行增量搜索,并应与命令提示符中的 -i 标志一起使用。‘search-again’ 重复上次搜索,而 ‘search-reverse’ 执行相同的操作,但反转方向(正向变为反向,反向变为正向)。

默认增量搜索键绑定 ‘C-r’ 和 ‘C-s’ 旨在模拟 emacs(1)。首次按下时,它们允许输入新的搜索词;如果按下时搜索词为空,它们会重复使用之前使用的搜索词。

‘next-prompt’ 和 ‘previous-prompt’ 在 shell 提示符之间移动,但需要 shell 发出转义序列 (\033]133;A\033\),以告知 tmux 提示符的位置;如果 shell 不这样做,这些命令将不起作用。-o 标志跳转到命令输出的开头,而不是 shell 提示符。查找命令输出的开头需要 shell 发出转义序列 (\033]133;C\033\),以告知 tmux 输出的开始位置。如果 shell 不发送这些转义序列,这些命令将不起作用。

复制命令可以接受可选的缓冲区前缀参数,该参数用于生成缓冲区名称(默认值为“buffer”,因此缓冲区名称为“buffer0”、“buffer1”等)。管道命令接受一个命令参数,即选择的文本将被管道传输到的命令。‘copy-pipe’ 变体也会复制选择。某些命令的 ‘-and-cancel’ 变体在完成操作后退出复制模式(对于复制命令),或者当光标到达底部时(对于滚动命令)。‘-no-clear’ 变体不会清除选择。所有复制命令都可以接受 -C 和 -P 标志。-C 标志禁止在复制时设置终端剪贴板,而 -P 标志禁止添加带有文本的粘贴缓冲区。

下一个和上一个单词键跳过空格,并将连续的单词分隔符或字母的序列视为单词。可以使用 word-separators 会话选项自定义单词分隔符。下一个单词移动到下一个单词的开头,下一个单词结尾移动到下一个单词的结尾,上一个单词移动到上一个单词的开头。三个下一个空格和上一个空格键的工作方式类似,但使用单个空格作为单词分隔符。将 word-separators 设置为空字符串会使下一个/上一个单词等效于下一个/上一个空格。

跳转命令可在行内快速移动。例如,键入 ‘f’ 后跟 ‘/’ 将光标移动到当前行中的下一个 ‘/’ 字符。然后,使用 ‘;’ 跳转到下一个出现的位置。


在复制模式中,命令可以以可选的重复计数作为前缀。对于 vi 键绑定,使用数字键输入前缀;对于 emacs,Alt(meta)键和数字键开始输入前缀。

复制模式命令的语法为:

copy-mode [-deHMqSu] [-s src-pane] [-t target-pane]

进入复制模式。

-u 进入复制模式并向上滚动一页,-d 向下滚动一页。-H 隐藏位于右上角的指示器。-q 取消复制模式和任何其他模式。

-M 开始鼠标拖动(仅当绑定到鼠标键绑定时有效,请参见“鼠标支持”)。
-S 绑定到鼠标拖动事件时执行滚动;例如,copy-mode -Se 绑定到 MouseDrag1ScrollbarSlider,这是默认设置。

-s 从 src-pane 复制,而不是 target-pane。

-e 指定滚动到历史记录的底部(到达可见屏幕)时应退出复制模式。在复制模式下,按下一个非滚动键将禁用此行为。这旨在允许快速滚动浏览一个窗格的历史记录,例如:

bind PageUp copy-mode -eu
bind PageDown copy-mode -ed

有许多预设的窗格排列方式,这些被称为布局。可以使用 select-layout 命令选择这些布局,或使用 next-layout(默认绑定到“空格键”)进行循环;选择布局后,可以在布局中像往常一样移动和调整窗格的大小。

支持以下布局:

even-horizontal

窗格从左到右均匀地分布在窗口中。

even-vertical

窗格从上到下均匀分布。

main-horizontal

一个大型(主)窗格显示在窗口顶部,其余窗格在底部剩余空间中从左到右分布。使用 main-pane-height 窗口选项指定顶部窗格的高度。

main-horizontal-mirrored

与 main-horizontal 相同,但镜像显示,因此主窗格位于窗口底部。

main-vertical

一个大型(主)窗格显示在窗口左侧,其余窗格在右侧剩余空间中从上到下分布。使用 main-pane-width 窗口选项指定左侧窗格的宽度。

main-vertical-mirrored

与 main-vertical 相同,但镜像显示,因此主窗格位于窗口右侧。

tiled 窗格尽可能均匀地分布在窗口的行和列中。

此外,select-layout 还可以用于应用以前使用的布局——list-windows 命令以适合与 select-layout 一起使用的格式显示每个窗口的布局。例如:

$ tmux list-windows
0 ksh [159x48]
layout: bb62,159x48,0,0{79x48,0,0,79x48,80,0}
$ tmux select-layout 'bb62,159x48,0,0{79x48,0,0,79x48,80,0}'

tmux 会根据当前窗口大小自动调整布局的大小。请注意,不能将布局应用于包含多于原始布局定义中窗格数量的窗口。

以下是与窗口和面板相关的命令:

break-pane [-abdP] [-F format] [-n window-name] [-s src-pane] [-t dst-window]
(别名:breakp)

将 src-pane 从其包含的窗口中分离出来,使其成为 dst-window 中唯一的面板。 使用 -a 或 -b 时,窗口将被移动到现有窗口之后或之前(如果需要,现有窗口将被移动)。如果给定 -d,则新窗口不会成为当前窗口。-P 选项在创建新窗口后打印有关新窗口的信息。 默认情况下,它使用“#{session_name}:#{window_index}.#{pane_index}”格式,但可以使用 -F 指定不同的格式。

capture-pane [-aepPqCJMN] [-b buffer-name] [-E end-line] [-S start-line] [-t target-pane]
(别名:capturep)

捕获面板的内容。如果给定了 -p,则输出将发送到 stdout,否则发送到 -b 指定的缓冲区或新的缓冲区(如果省略)。如果给定 -a,则使用备用屏幕,并且历史记录不可访问。如果不存在备用屏幕,则会返回错误,除非给定了 -q。 同样,如果面板处于某种模式下,-M 使用屏幕来显示该模式。如果给定了 -e,则输出将包含用于文本和背景属性的转义序列。-C 还会将不可打印的字符作为八进制 \xxx 进行转义。-T 忽略不包含字符的尾部位置。-N 保持每行末尾的尾部空格,-J 保持尾部空格并连接任何换行的行;-J 隐式表示 -T。-P 仅捕获面板已接收到的任何输出,这些输出是尚未完成的转义序列的开始部分。

-S 和 -E 指定起始和结束行号,0 是可见面板的第一行,负数是历史记录中的行。“-”表示 -S 的起始历史记录,表示 -E 的可见面板的末尾。默认情况下,仅捕获可见面板的内容。

choose-client [-NryZ] [-F format] [-f filter] [-K key-format] [-O sort-order] [-t target-pane]
[template]

将面板置于客户端模式,允许客户端从列表中进行交互式选择。 每个客户端显示在一行上。左侧显示一个快捷键,允许立即选择,或者可以使用下面的键导航和选择或以其他方式操作该项目。-Z 放大面板。-y 禁用任何确认提示。可以使用以下键在客户端模式下:

键   功能
Enter  选择选定的客户端
Up     选择上一个客户端
Down   选择下一个客户端
C-s    按名称搜索
n      重复上次搜索(向前)
N      重复上次搜索(向后)
t      切换客户端是否已标记
T      取消标记所有客户端
C-t    标记所有客户端
d      分离选定的客户端
D      分离已标记的客户端
x      分离并向选定的客户端发送 HUP 信号
X      分离并向已标记的客户端发送 HUP 信号
z      暂停选定的客户端
Z      暂停已标记的客户端
f      输入一个格式来过滤项目
O      更改排序字段
r      反转排序顺序
v      切换预览
q      退出模式

在选择客户端后,模板中的“%%”将被客户端名称替换,然后执行结果作为命令。如果未提供模板,则使用“detach-client -t '%%'”。

-O 指定初始排序字段:可以是“name”(名称)、“size”(大小)、“creation”(创建时间)或“activity”(活动时间)。-r 颠倒排序顺序。-f 指定初始过滤器:过滤器是一个格式 - 如果其结果为零,则列表中该项将不显示,否则将显示。如果过滤器会导致列表为空,则该过滤器将被忽略。-F 指定列表中每个项目的格式,-K 指定每个快捷键的格式;两者都针对每一行进行一次评估。-N 不显示预览,或者如果提供两次,则显示更大的预览。只有当至少附加了一个客户端时,此命令才有效。

choose-tree [-GNrswyZ] [-F format] [-f filter] [-K key-format] [-O sort-order] [-t target-pane] [template]

将窗格置于树模式,其中可以交互地从树中选择会话、窗口或窗格。每个会话、窗口或窗格在一行中显示。左侧显示一个快捷键,允许立即选择,或者可以使用以下键导航树并选择或以其他方式操作项目。-s 从折叠的会话开始,-w 从折叠的窗口开始。-Z 缩放窗格。-y 禁用所有确认提示。以下键可以在树模式中使用:

键   功能
Enter   选择选定的项目
Up  选择前一个项目
Down    选择下一个项目
S-Up    将当前窗口与前一个窗口交换
S-Down  将当前窗口与下一个窗口交换
+   展开选定的项目
-   折叠选定的项目
M-+ 展开所有项目
M-- 折叠所有项目
x   删除选定的项目
X   删除标记的项目
<   向左滚动预览列表
>   向右滚动预览列表
C-s 按名称搜索
m   设置标记的窗格
M   清除标记的窗格
n   重复上次搜索
N   向后重复上次搜索
t   切换项目是否已标记
T   取消标记所有项目
C-t 标记所有项目
:   对每个标记的项目运行命令
f   输入用于过滤项目的格式
H   跳转到起始窗格
O   更改排序字段
r   反转排序顺序
v   切换预览
q   退出模式

在选择会话、窗口或窗格后,模板中的第一个实例“%%”和所有实例“%1”都将被目标替换,然后执行结果作为命令。如果未提供模板,则使用“switch-client -t '%%'”。

-O 指定初始排序字段:可以是“index”(索引)、“name”(名称)或“time”(活动时间)。-r 颠倒排序顺序。-f 指定初始过滤器:过滤器是一个格式 - 如果其结果为零,则该项目将不显示,否则将显示。如果过滤器会导致列表为空,则该过滤器将被忽略。-F 指定树中每个项目的格式,-K 指定每个快捷键的格式;两者都针对每一行进行一次评估。-N 不显示预览,或者如果提供两次,则显示更大的预览。-G 将任何会话组中的所有会话都包含在树中,而不是仅包含第一个会话。只有当至少附加了一个客户端时,此命令才有效。

customize-mode [-NZ] [-F format] [-f filter] [-t target-pane] [template]
将一个窗格置于自定义模式,可以在该模式下浏览和修改选项和按键绑定。该模式显示当前窗口中活动窗格的选项值。-Z 放大窗格。以下按键可以在自定义模式下使用:

按键   功能
Enter  设置窗格、窗口、会话或全局选项值
Up     选择前一个项目
Down   选择下一个项目
+      展开所选项目
-      折叠所选项目
M-+    展开所有项目
M--    折叠所有项目
s      设置选项值或按键属性
S      设置全局选项值
w      如果选项适用于窗格和窗口,则设置窗口选项值
d      将一个选项或按键设置为默认值
D      将标记的选项和标记的按键设置为默认值
u      取消设置一个选项(如果为全局选项,则设置为默认值)或取消绑定一个按键
U      取消设置标记的选项并取消绑定标记的按键
C-s    按名称搜索
n      重复上一次搜索(向前)
N      重复上一次搜索(向后)
t      切换项目是否被标记
T      取消标记所有项目
C-t    标记所有项目
f      输入一个格式来过滤项目
v      切换选项信息
q      退出模式

-f 指定一个初始过滤器:过滤器是一个格式 - 如果该格式的计算结果为零,则列表中的项目将不显示,否则将显示。如果过滤器会导致列表为空,则将被忽略。-F 指定每个树中项目的格式。-N 以不显示选项信息的方式启动。此命令仅在至少连接一个客户端时才有效。

display-panes [-bN] [-d duration] [-t target-client] [template]
(别名:displayp)
显示 target-client 显示的每个窗格的可视指示器。请参阅 display-panes-colour 和 display-panes-active-colour 会话选项。指示器在按下按键时关闭(除非指定了 -N),或者在经过 duration 毫秒后关闭。如果未指定 -d,则使用 display-panes-time。持续时间为零表示指示器会一直显示,直到按下按键。当指示器显示在屏幕上时,可以使用“0”到“9”这些按键来选择一个窗格,这将导致 template 作为命令执行,并将“%%”替换为窗格 ID。默认的 template 是“select-pane -t '%%'”。使用 -b 时,在指示器关闭之前,其他命令将不会被阻止执行。

find-window [-iCNrTZ] [-t target-pane] match-string
(别名:findw)
在窗口名称、标题和可见内容(但不包括历史记录)中搜索 glob(7) 模式或,使用 -r,正则表达式 match-string。标志控制匹配行为:-C 仅匹配可见的窗口内容,-N 仅匹配窗口名称,-T 仅匹配窗口标题。-i 使搜索不区分大小写。默认值为 -CNT。-Z 放大窗格。

此命令仅在至少连接了一个客户端时才有效。

join-pane [-bdfhv] [-l size] [-s src-pane] [-t dst-pane]
(别名:joinp)

类似于 split-window,但不是分割 dst-pane 并创建一个新窗格,而是分割它并将 src-pane 移动到该空间中。这可用于撤销 break-pane 操作。-b 选项使 src-pane 与 dst-pane 的左侧或上方连接。

如果省略 -s 并且存在标记的窗格(请参阅 select-pane -m),则使用标记的窗格而不是当前窗格。

kill-pane [-a] [-t target-pane]
(别名:killp)

销毁给定的窗格。如果包含窗格的窗口中没有剩余的窗格,则该窗口也会被销毁。-a 选项会杀死除使用 -t 给出的窗格之外的所有窗格。

kill-window [-a] [-t target-window]
(别名:killw)

杀死当前窗口或 target-window 处的窗口,并将其从所有链接到的会话中删除。-a 选项会杀死除使用 -t 给出的窗口之外的所有窗口。

last-pane [-deZ] [-t target-window]
(别名:lastp)

选择最后一个(先前选择的)窗格。-Z 在窗口缩放时保持窗口缩放状态。-e 启用或 -d 禁用对窗格的输入。

last-window [-t target-session]
(别名:last)

选择最后一个(先前选择的)窗口。如果未指定 target-session,则选择当前会话的最后一个窗口。

link-window [-abdk] [-s src-window] [-t dst-window]
(别名:linkw)

将 src-window 处的窗口链接到指定的 dst-window。如果指定了 dst-window 并且不存在这样的窗口,则 src-window 将链接到那里。使用 -a 或 -b,窗口将移动到 dst-window 之后的下一个索引或之前的索引(如果需要,现有窗口将被移动)。如果给定了 -k 并且 dst-window 存在,则它将被杀死,否则会生成错误。如果给定了 -d,则新链接的窗口不会被选中。

list-panes [-as] [-F format] [-f filter] [-t target]
(别名:lsp)

如果给定了 -a,则忽略 target 并列出服务器上的所有窗格。如果给定了 -s,则 target 是一个会话(或当前会话)。如果两者都没有给定,则 target 是一个窗口(或当前窗口)。-F 指定每行的格式,-f 指定过滤器。仅显示过滤器为真的窗格。请参阅“FORMATS”部分。

list-windows [-a] [-F format] [-f filter] [-t target-session]
(别名:lsw)

如果给定了 -a,则列出服务器上的所有窗口。否则,列出当前会话或 target-session 中的窗口。-F 指定每行的格式,-f 指定过滤器。仅显示过滤器为真的窗口。请参阅“FORMATS”部分。

move-pane [-bdfhv] [-l size] [-s src-pane] [-t dst-pane]
(别名:movep)

与 join-pane 相同。


move-window [-abrdk] [-s src-window] [-t dst-window]
(别名:movew)

类似于 link-window,只是将 src-window 处的窗口移动到 dst-window。 使用 -r,会重新编号会话中的所有窗口,按顺序排列,同时遵守 base-index 选项。

new-window [-abdkPS] [-c start-directory] [-e environment] [-F format] [-n window-name] [-t
target-window] [shell-command [argument ...]]
(别名:neww)

创建一个新窗口。如果使用 -a 或 -b,则新窗口将插入在指定的 target-window 之后或之前,并根据需要移动窗口;否则,target-window 将是新窗口的位置。

如果给定 -d,则会话不会使新窗口成为当前窗口。
target-window 表示要创建的窗口;如果目标已存在,则会显示错误,除非使用 -k 标志,在这种情况下,它将被销毁。 如果给定 -S 并且已存在名为 window-name 的窗口,则该窗口将被选中(除非同时给定了 -d,在这种情况下,该命令不执行任何操作)。

shell-command 是要执行的命令。 如果未指定 shell-command,则将使用 default-command 选项的值。 -c 指定创建新窗口的工作目录。

当 shell 命令完成后,窗口将关闭。 请参阅 remain-on-exit 选项以更改此行为。

-e 的形式为“VARIABLE=value”,并为新创建的窗口设置环境变量;可以多次指定它。

TERM 环境变量必须设置为“screen”或“tmux”,才能在 tmux 内部运行的所有程序。 新窗口将自动将“TERM=screen”添加到其环境中,但应注意不要在 shell 启动文件中或通过 -e 选项重置此设置。

-P 选项在创建新窗口后打印有关新窗口的信息。 默认情况下,它使用“\#{session\_name}:\#{window\_index}”格式,但可以使用 -F 指定不同的格式。

next-layout [-t target-window]
(别名:nextl)

将一个窗口移动到下一个布局,并重新排列窗格以适应。

next-window [-a] [-t target-session]
(别名:next)

移动到会话中的下一个窗口。 如果使用 -a,则移动到下一个带有警报的窗口。

pipe-pane [-IOo] [-t target-pane] [shell-command]
(别名:pipep)

将 target-pane 中程序的输出管道传输到 shell 命令,反之亦然。 一个窗格一次只能连接到一个命令,在执行 shell-command 之前,任何现有的管道都会被关闭。 shell-command 字符串可以包含 status-left 选项支持的特殊字符序列。 如果未提供 shell-command,则将关闭当前的管道(如果有)。

-I 和 -O 指定哪些 shell-command 输出流连接到窗格:使用 -I,stdout 连接(因此 shell-command 打印的任何内容都将写入窗格,就像它是键入的一样);使用 -O,stdin 连接(因此窗格中的任何输出都将管道传输到 shell-command)。 两者都可以一起使用,如果两者都没有指定,则使用 -O。

`-o` 选项仅在不存在之前的管道时才打开新的管道,允许使用单个按键来切换管道,例如:
bind-key C-p pipe-pane -o 'cat >>~/output.#I-#P'
`previous-layout [-t target-window]`

(别名:prevl) 移动到会话中的前一个布局。

`previous-window [-a] [-t target-session]`

(别名:prev) 移动到会话中的前一个窗口。使用 -a 时,移动到具有警报的前一个窗口。

`rename-window [-t target-window] new-name`

(别名:renamew) 重命名当前窗口,或重命名指定的 target-window 窗口为 new-name

`resize-pane [-DLMRTUZ] [-t target-pane] [-x width] [-y height] [adjustment]`

(别名:resizep) 调整面板的大小,向上、向下、向左或向右调整 adjustment,使用 -U-D-L-R;或者调整到绝对大小,使用 -x-y。调整量以行或列为单位(默认值为 1;-x-y 可以指定为行或列数,也可以后跟 %,表示窗口大小的百分比(例如 -x 10%)。使用 -Z,活动面板将在缩放(占据整个窗口)和未缩放(在其正常位置的布局中)之间切换。

`-M` 启动鼠标调整大小(仅当绑定到鼠标按键绑定时有效,请参阅“MOUSE SUPPORT”)。

`-T` 裁剪当前光标位置以下的所有行,并将行从历史记录中删除,以替换它们。

`resize-window [-aADLRU] [-t target-window] [-x width] [-y height] [adjustment]`

(别名:resizew) 调整窗口的大小,向上、向下、向左或向右调整 adjustment,使用 -U-D-L-R;或者调整到绝对大小,使用 -x-y。调整量以行或单元格为单位(默认值为 1。-A 设置包含该窗口的最大会话的大小;-a 设置最小会话的大小。此命令将自动将 window-size 选项设置为手动。

`respawn-pane [-k] [-c start-directory] [-e environment] [-t target-pane] [shell-command [argument ...]]`

(别名:respawnp) 重新激活其中命令已退出的面板(请参阅 remain-on-exit 窗口选项)。如果未提供 shell-command,则执行创建面板时或上次重新激活时使用的命令。该面板必须已经处于非活动状态,除非提供了 -k,在这种情况下,将终止任何现有的命令。-c 指定面板的新工作目录。-e 选项与 new-window 命令中的含义相同。

`respawn-window [-k] [-c start-directory] [-e environment] [-t target-window] [shell-command [argument ...]]`

(别名:respawnw) 重新激活其中命令已退出的窗口(请参阅 remain-on-exit 窗口选项)。如果未提供 shell-command,则执行创建窗口时或上次重新激活时使用的命令。该窗口必须已经处于非活动状态,除非提供了 -k,在这种情况下,将终止任何现有的命令。-c 指定窗口的新工作目录。-e 选项与 new-window 命令中的含义相同。


rotate-window [-DUZ] [-t target-window]
(别名:rotatew)

旋转窗口内的窗格位置,向上(数值较小)使用 -U,向下(数值较大)使用 -U。 -Z 如果窗口已缩放,则保持窗口缩放状态。

select-layout [-Enop] [-t target-pane] [layout-name]
(别名:selectl)

选择窗口的特定布局。如果未提供 layout-name,则重新应用上次使用的预设布局(如果有)。 -n 和 -p 与 next-layout 和 previous-layout 命令等效。 -o 恢复上次设置的布局(如果可能),从而撤消最新的布局更改。 -E 将当前窗格及其相邻的任何窗格均匀地展开。

select-pane [-DdeLlMmRUZ] [-T title] [-t target-pane]
(别名:selectp)

使 target-pane 成为其窗口中活动的窗格。如果使用 -D、-L、-R 或 -U 中的任何一个,则分别使用位于 target-pane 下方、左侧、右侧或上方的窗格。 -Z 如果窗口已缩放,则保持窗口缩放状态。 -l 与使用 last-pane 命令相同。 -e 启用或 -d 禁用对窗格的输入。 -T 设置窗格标题。

-m 和 -M 用于设置和清除标记的窗格。一次只有一个标记的窗格,设置新的标记窗格会清除上一个。标记的窗格是 -s join-pane、move-pane、swap-pane 和 swap-window 的默认目标。

select-window [-lnpT] [-t target-window]
(别名:selectw)

选择 target-window 处的窗口。 -l、-n 和 -p 与 last-window、next-window 和 previous-window 命令等效。如果提供了 -T,并且选定的窗口已经是当前窗口,则该命令的行为类似于 last-window。

split-window [-bdfhIvPZ] [-c start-directory] [-e environment] [-F format] [-l size] [-t target-pane] [shell-command [argument ...]]
(别名:splitw)

通过分割 target-pane 来创建一个新的窗格:-h 执行水平分割,-v 执行垂直分割;如果未指定任何一个,则假定为 -v。 -l 选项指定新窗格的大小,以行(对于垂直分割)或列(对于水平分割)为单位;大小后可以跟上“%”,以指定可用空间的百分比。 -b 选项导致新窗格在 target-pane 的左侧或上方创建。 -f 选项创建一个跨越整个窗口高度(对于 -h)或整个窗口宽度(对于 -v)的新窗格,而不是分割活动窗格。 -Z 如果窗口未缩放,则缩放窗口;如果已经缩放,则保持窗口缩放状态。

一个空的 shell-command('')将创建一个没有在其中运行命令的窗格。可以使用 display-message 命令将输出发送到这样的窗格。 -I 标志(如果 shell-command 为空或未指定)将创建一个空窗格,并将来自 stdin 的任何输出转发到该窗格。 例如:

$ make 2>&1|tmux splitw -dI &

所有其他选项的含义与 new-window 命令中的含义相同。


swap-pane [-dDUZ] [-s src-pane] [-t dst-pane]
(别名: swapp)
交换两个窗格。如果使用 -U 且没有使用 -s 指定源窗格,则目标窗格将与之前的窗格(按数字顺序)交换;-D 交换到下一个窗格(按数字顺序)。-d 指示 tmux 不要更改活动窗格,-Z 在缩放时保持窗口缩放状态。

如果省略 -s 且存在标记的窗格(请参阅 select-pane -m),则使用标记的窗格而不是当前窗格。

swap-window [-d] [-s src-window] [-t dst-window]
(别名: swapw)
类似于 link-window,只是源窗口和目标窗口会交换。如果 src-window 中不存在窗口,则会出错。如果给出 -d,则新窗口不会成为当前窗口。

如果省略 -s 且存在标记的窗格(请参阅 select-pane -m),则使用包含标记窗格的窗口而不是当前窗口。

unlink-window [-k] [-t target-window]
(别名: unlinkw)
取消链接 target-window。除非给出 -k,否则仅当窗口链接到多个会话时,才能取消链接窗口;如果指定 -k 且窗口仅链接到一个会话,则取消链接并销毁该窗口。

键绑定

tmux 允许将命令绑定到大多数键,可以有也可以没有前缀键。在指定键时,大多数键表示自身(例如,“A”到“Z”)。可以使用“C-”或“^”作为 Ctrl 键的前缀,使用“S-”作为 Shift 键的前缀,使用“M-”作为 Alt(元)键的前缀。此外,还可以使用以下特殊键名:Up、Down、Left、Right、BSpace、BTab、DC(Delete)、End、Enter、Escape、F1 到 F12、Home、IC(Insert)、NPage/PageDown/PgDn、PPage/PageUp/PgUp、Space 和 Tab。请注意,要绑定“”或“'”键,必须使用引号,例如:

bind-key '"' split-window
bind-key "'" new-window

绑定到 Any 键的命令将在所有没有更特定绑定的键上执行。

与键绑定相关的命令如下:

bind-key [-nr] [-N note] [-T key-table] key [command [argument ...]]
(别名: bind)
将键 key 绑定到命令。键在键表中绑定。默认情况下(不使用 -T),键绑定在默认键表(即前缀键表)中。此表用于在按下前缀键后按下的键(例如,默认情况下,“c”绑定到前缀表中 new-window,因此“C-b c”会创建一个新窗口)。根表用于在不按前缀键的情况下按下的键:将“c”绑定到根表(不建议),这意味着纯“c”将创建一个新窗口。-n 是 -T root 的别名。键也可以绑定到自定义键表,并使用 switch-client -T 命令从键绑定中切换到它们。-r 标志指示此键可以重复,请参阅 initial-repeat-time 和 repeat-time 选项。-N 附加一个注释到该键(在 list-keys -N 中显示),可以通过传递一个空字符串来清除该注释。可以使用 -r 和 -N 标志来更改现有的绑定,而无需使用命令。

要查看默认绑定和可能的命令,请参阅 list-keys 命令。

list-keys [-1aN] [-P prefix-string] [-T key-table] [key]
(别名: lsk)

列出按键绑定。有两种形式:默认形式将按键绑定列为 bind-key 命令;-N 形式仅列出带有注释的按键,并仅显示每个按键及其注释。

在默认形式中,默认情况下会列出所有按键表。-T 选项仅列出 key-table 中的按键。

-N 形式中,默认情况下仅列出根按键表和前缀按键表中的按键;-T 选项也会仅列出 key-table 中的按键。-P 选项指定在每个按键之前打印的前缀,-1 选项仅列出第一个匹配的按键。-a 选项列出那些没有注释的按键的命令,而不是跳过它们。

send-keys [-FHKlMRX] [-c target-client] [-N repeat-count] [-t target-pane] [key ...]
(别名: send)

将按键或按键序列发送到窗口或客户端。每个参数 key 是要发送的按键名称(例如“C-a”或“NPage”);如果字符串未被识别为按键,则将其作为一系列字符发送。如果提供了 -K 选项,则将按键发送到 target-client,因此它们将在客户端的按键表中查找,而不是发送到 target-pane。所有参数按顺序从第一个到最后一个发送。如果没有提供按键,并且该命令已绑定到按键,则使用该按键。

`-l` 标志禁用按键名称查找,并将按键作为文字 UTF-8 字符处理。
`-H` 标志期望每个按键都是 ASCII 字符的十六进制数字。

`-R` 标志会重置终端状态。

`-M` 标志用于传递鼠标事件(仅当绑定到鼠标按键绑定时有效,请参见“鼠标支持”)。

`-X` 用于将命令发送到复制模式,请参见“窗口和面板”部分。`-N` 选项指定重复计数,`-F` 选项扩展参数中的格式。
send-prefix [-2] [-t target-pane]

将前缀按键或带有 -2 选项的辅助前缀按键发送到窗口,就像按下了一样。

unbind-key [-anq] [-T key-table] key
(别名: unbind)

取消绑定与 key 关联的命令。-n-T 选项与 bind-key 相同。如果存在 -a 选项,则会删除所有按键绑定。-q 选项可防止返回错误。

选项

可以通过更改各种选项的值来修改 tmux 的外观和行为。每个选项属于一个或多个作用域(服务器、会话、窗口和面板),并具有一种类型(字符串、数字、按键、颜色、标志、选择或命令)。标志类型选项的值可以是:1、on、yes、0、off 或 no;对于可能的选择值,请参见各自的选项;对于按键选项,请参见“按键绑定”部分;对于颜色选项,请参见“样式”部分。

tmux 服务器有一组全局服务器选项,这些选项不适用于任何特定的窗口或会话或面板。这些选项可以使用 set-option -s 命令进行更改,或者使用 show-options -s 命令进行显示。

此外,每个会话都可能有一组会话选项,并且有一组单独的全局会话选项。未配置特定选项的会话将继承全局会话选项中的值。会话选项使用 set-option 命令进行设置或取消设置,并可以使用 show-options 命令进行列出。可用的服务器和会话选项在 set-option 命令下列出。

类似地,每个窗口都附加了一组窗口选项,每个窗格都附加了一组窗格选项。窗格选项继承自窗口选项。这意味着可以将任何窗格选项设置为窗口选项,以将其应用于窗口中的所有窗格,而无需设置该选项,例如,以下命令会将背景颜色设置为红色,应用于除窗格 0 之外的所有窗格:

set -w window-style bg=red
set -pt:.0 window-style bg=blue

还有一个全局窗口选项集,任何未设置的窗口或窗格选项都将从中继承。窗口和窗格选项使用 set-option -w-p 命令进行更改,并使用 show-option -w-p 命令进行显示。

tmux 还支持以“@”为前缀的用户选项。用户选项可以具有任何名称,只要以“@”为前缀,并且可以设置为任何字符串。例如:

$ tmux set -wq @foo "abc123"
$ tmux show -wv @foo
abc123

选项使用以下命令进行管理:

set-option [-aFgopqsuUw] [-t target-pane] option [value]
(别名:set)

使用 -p 设置窗格选项,使用 -w 设置窗口选项,使用 -s 设置服务器选项,否则设置会话选项。如果该选项不是用户选项,-w-s 可能是不必要的——tmux 将从选项名称推断作用域,并假定 -w 用于窗格选项。如果给定 -g,则设置全局会话或窗口选项。

`-F` 扩展选项值中的格式。`-u` 标志取消设置一个选项,因此会话将从全局选项继承该选项(或者,使用 `-g`,将全局选项恢复到默认值)。`-U` 取消设置一个选项(类似于 `-u`),但如果该选项是窗格选项,则还会取消设置窗口中任何窗格上的该选项。`value` 取决于选项及其类型,可以省略用于标志和选择选项以切换其值(选择选项在前两个选项之间切换)。

^ o 标志可防止设置已经设置的选项,-q 标志可抑制有关未知或不明确选项的错误。

使用 -a,如果选项需要一个字符串或一个样式,则 value 将附加到现有设置中。例如:

set -g status-left "foo"
set -ag status-left "bar"

结果将是“foobar”。并且:

set -g status-style "bg=red"
set -ag status-style "fg=blue"

结果将是红色背景和蓝色前景。如果没有 -a,结果将是默认背景和蓝色前景。

show-options [-AgHpqsvw] [-t target-pane] [option]
(别名:show)

使用 -p 显示窗格选项(或如果提供了 option,则显示单个选项),使用 -w 显示窗口选项,使用 -s 显示服务器选项,否则显示会话选项。如果该选项不是用户选项,-w-s 可能是不必要的——tmux 将从选项名称推断作用域,并假定 -w 用于窗格选项。如果使用 -g,则列出全局会话或窗口选项。-v 仅显示选项值,而不显示名称。如果设置了 -q,则如果选项未设置,则不会返回错误。-H 包含钩子(默认情况下省略)。-A 包含从父选项集继承的选项,这些选项将用星号标记。


可用的服务器选项如下:

backspace key
设置 tmux 发送退格键时使用的键。

buffer-limit number
设置缓冲区数量;当添加新缓冲区到堆栈顶部时,如果需要保持此最大长度,则会从底部删除旧缓冲区。

command-alias[] name=value
这是一个自定义命令别名的数组。如果未知的命令与 name 匹配,则将其替换为 value。例如,在执行以下操作之后:

set -s command-alias[100] zoom='resize-pane -Z'

使用:

zoom -t:.1

等同于:

resize-pane -Z -t:.1

请注意,别名在解析命令时进行扩展,而不是在执行时进行扩展,因此使用 bind-key 绑定别名会绑定扩展后的形式。

codepoint-widths[] string
一个允许覆盖 Unicode 代码点的宽度的数组选项。请注意,新的宽度将应用于所有客户端。每个条目的格式为 codepoint=width,其中 codepoint 可以是 UTF-8 字符或形式为“U+数字”的标识符,其中数字是十六进制数字。

copy-command shell-command
如果使用没有参数的 copy-pipe 复制模式命令,则指定要管道传输到的命令。

default-client-command command
设置在没有命令的情况下调用 tmux 时要运行的默认命令。默认值为 new-session。

default-terminal terminal
设置在会话中创建的新窗口的默认终端——TERM 环境变量的默认值。为了使 tmux 正常工作,必须将其设置为“screen”、“tmux”或其派生版本。

escape-time time
设置 tmux 在输入转义字符后等待的时间(以毫秒为单位),以确定它是否是函数或元键序列的一部分。

editor shell-command
设置 tmux 运行编辑器时使用的命令。

exit-empty [on | off]
如果启用(默认值),当没有活动的会话时,服务器将退出。

exit-unattached [on | off]
如果启用,当没有附加的客户端时,服务器将退出。

extended-keys [on | off | always]
控制如何报告修饰键(与 Control、Meta 或 Shift 组合按下的键)。这等效于 xterm(1) 资源中的 modifyOtherKeys。

当设置为 on 时,pane 内部的程序可以请求两种模式之一:模式 1,它仅更改没有现有已知表示形式的键的序列;或者模式 2,它更改所有键的序列。当设置为 always 时,应用程序仍然可以请求模式 1 和模式 2,但模式 1 将强制使用,而不是标准模式。当设置为 off 时,此功能被禁用,并且仅报告标准键。

tmux 总是会自行请求扩展键,如果终端支持的话。 另请参见 `extkeys` 功能,以及 `terminal-features` 选项、`extended-keys-format` 选项和 `pane_key_mode` 变量。

`extended-keys-format` [csi-u | xterm]
选择用于向应用程序报告修改过的键的两种可能格式之一。 这相当于 `xterm(1)` 中的 `formatOtherKeys` 资源。 例如,`C-S-a` 在设置为 `xterm` 时,将报告为 `^[[27;6;65~`,而在设置为 `csi-u` 时,将报告为 `^[[65;6u`。

`focus-events` [on | off]
如果启用,则从终端请求焦点事件(如果受支持),并将其传递到在 tmux 中运行的应用程序。 更改此选项后,应先分离然后重新连接客户端。

`history-file` path
如果非空,则 tmux 会在退出时将命令提示符历史记录写入此文件,并在启动时从中加载。

`input-buffer-size` bytes
允许读取的转义序列和控制序列的最大字节数。 达到此限制后,该序列将被丢弃。

`message-limit` number
设置要为每个客户端保存的消息日志中的错误或信息消息的数量。

`prompt-history-limit` number
设置要为每种类型的命令提示符保存在历史文件中的历史记录项数。

`set-clipboard` [on | external | off]
尝试使用 `xterm(1)` 转义序列来设置终端剪贴板内容,如果 terminfo(5) 描述中有 `Ms` 条目(请参阅“TERMINFO 扩展”部分)。

如果设置为 `on`,tmux 将同时接受用于创建缓冲区的转义序列,并尝试设置终端剪贴板。 如果设置为 `external`,tmux 将尝试设置终端剪贴板,但会忽略应用程序尝试设置 tmux 缓冲区。 如果设置为 `off`,tmux 将既不会接受剪贴板转义序列,也不会尝试设置剪贴板。

请注意,此功能需要在 `xterm(1)` 中通过设置以下资源来启用:

`disallowedWindowOps: 20,21,SetXprop`

或者,在需要时从 `xterm(1)` 交互式菜单中更改此属性。

`terminal-features[]` string
为从 `terminfo(5)` 读取的终端类型设置终端功能。 tmux 具有一组命名的终端功能。 每个功能都会对正在使用的 `terminfo(5)` 条目应用适当的更改。

tmux 可以检测一些常见终端的功能;可以使用此选项来轻松地告诉 tmux 关于它无法检测到的终端支持的功能。 `terminal-overrides` 选项允许设置单个 `terminfo(5)` 功能,`terminal-features` 旨在用于以标准方式支持的功能类别,但 `terminfo(5)` 没有报告。 必须小心配置此选项,只能配置终端实际支持的功能。

这是一个数组选项,其中每个条目都是一个冒号分隔的字符串,由一个终端类型模式(使用 glob(7) 模式匹配)和一个终端特性列表组成。可用的特性有:

256 支持使用 SGR 转义序列的 256 种颜色。

clipboard 允许设置系统剪贴板。

ccolour 允许设置光标颜色。

cstyle 允许设置光标样式。

extkeys 支持扩展键。

focus 支持焦点报告。

hyperlinks 支持 OSC 8 超链接。

ignorefkeys 忽略 terminfo(5) 中的功能键,并仅使用 tmux 内部设置。

margins 支持 DECSLRM 边距。

mouse 支持 xterm(1) 鼠标序列。

osc7 支持 OSC 7 工作目录扩展。

overline 支持 SGR 属性中的上划线。

rectfill 支持 DECFRA 矩形填充转义序列。

RGB 支持使用 SGR 转义序列的 RGB 颜色。

sixel 支持 SIXEL 图形。

strikethrough 支持 SGR 转义序列中的删除线。

sync 支持同步更新。

title 支持 xterm(1) 标题设置。

usstyle 允许设置下划线样式和颜色。

terminal-overrides[] string 允许使用 terminfo(5) 读取终端描述,并进行覆盖。每个条目都是一个冒号分隔的字符串,由一个终端类型模式(使用 glob(7) 模式匹配)和一组 name=value 条目组成。

例如,要为所有匹配 ‘rxvt*’ 的终端类型设置 ‘clear’ terminfo(5) 条目为 ‘\e[H\e[2J’:

rxvt*:clear=\e[H\e[2J

终端条目值在解释之前会通过 strunvis(3) 函数处理。

user-keys[] key 设置用户定义的键转义序列列表。每个条目都与名为 ‘User0’、‘User1’ 等的键相关联。

例如:

set -s user-keys[0] "\e[5;30012~"
bind User0 resize-pane -L 3

variation-selector-always-wide [on | off] 始终将 Unicode 变体选择器 16 视为标记一个宽字符。这是某些终端作为其 Unicode 14 支持的一部分所具有的特性。

可用的会话选项是:

activity-action [any | none | current | other] 当 monitor-activity 开启时,设置窗口活动时的操作。any 表示链接到会话的任何窗口中的活动都会导致发出蜂鸣声或消息(具体取决于 visual-activity),当前窗口中;none 表示忽略所有活动(等效于关闭 monitor-activity);current 表示仅忽略当前窗口之外的窗口中的活动;other 表示忽略当前窗口中的活动,但不忽略其他窗口中的活动。

assume-paste-time 毫秒 如果在一毫秒内输入了多个键,则假定这些键是粘贴的,而不是键入的,并且不会处理 tmux 键绑定。默认值为一毫秒,零会禁用此功能。

base-index index 设置基本索引,当创建新窗口时,将从该索引开始搜索未使用的索引。默认值为零。

bell-action [any | none | current | other]

设置当 monitor-bell 开启时,窗口中铃声的动作。其值与 activity-action 的值相同。

default-command shell-command

为新窗口设置默认命令(如果创建窗口时未指定),shell-command 可以是任何 sh(1) 命令。默认值为空字符串,这将指示 tmux 创建一个登录 shell,并使用 default-shell 选项的值。

default-shell path

指定默认 shell。当 default-command 选项设置为为空时,这将作为新窗口的登录 shell 使用,并且必须是可执行文件的完整路径。 启动时,tmux 会尝试从以下第一个合适的选项中设置默认值:SHELL 环境变量、getpwuid(3) 返回的 shell,或者 /bin/sh。当 tmux 用作登录 shell 时,应配置此选项。

default-size XxY

当 window-size 选项设置为 manual,或者在创建具有 new-session -d 的会话时,设置新窗口的默认大小。该值是宽度和高度,由一个“x”字符分隔。默认值为 80x24。

destroy-unattached [off | on | keep-last | keep-group]

如果设置为 on,则在最后一个客户端断开连接后销毁会话。如果设置为 off(默认值),则让会话处于孤立状态。如果设置为 keep-last,则仅当会话在一个组中并且该组中还有其他会话时才销毁会话。如果设置为 keep-group,则除非会话在一个组中并且是该组中唯一的会话,否则将销毁该会话。

detach-on-destroy [off | on | no-detached | previous | next]

如果设置为 on(默认值),则当客户端连接的会话被销毁时,客户端将被断开连接。如果设置为 off,客户端将切换到剩余会话中最活跃的会话。如果设置为 no-detached,则客户端仅在没有断开连接的会话时才被断开连接;如果存在断开连接的会话,则客户端将切换到最近活跃的会话。如果设置为 previous 或 next,客户端将切换到按字母顺序排列的上一会话或下一会话。

display-panes-active-colour colour

设置 display-panes 命令用于显示活动窗格指示器的颜色。

display-panes-colour colour

设置 display-panes 命令用于显示非活动窗格指示器的颜色。

display-panes-time time

设置 display-panes 命令显示的指示器显示的时间(以毫秒为单位)。

display-time time

设置状态栏消息和其他屏幕指示器显示的时间量。如果设置为 0,则消息和指示器将显示,直到按下按键。时间以毫秒为单位。

history-limit lines

设置窗口历史记录中保存的最大行数。此设置仅适用于新窗口;现有的窗口历史记录不会被调整大小,并且保留创建时的限制。

initial-repeat-time time

设置使用 -r 标志绑定按键时的初始重复时间(以毫秒为单位)。这允许在再次按下前缀键之前输入多个命令。请参阅 repeat-time 选项。如果 initial-repeat-time 为零,则 repeat-time 将用于第一次按键。


key-table key-table
将默认键表设置为 key-table,而不是 root。

lock-after-time 数字
在不活动数字秒后锁定会话(类似于 lock-session 命令)。默认情况下,不锁定(设置为 0)。

lock-command shell-command
运行每个客户端锁定时要运行的命令。默认情况下,运行 lock(1) 并使用 -np 标志。

menu-style 样式
设置菜单样式。请参阅“样式”部分,了解如何指定样式。

menu-selected-style 样式
设置所选菜单项的样式。请参阅“样式”部分,了解如何指定样式。

menu-border-style 样式
设置菜单边框样式。请参阅“样式”部分,了解如何指定样式。

menu-border-lines 类型
设置用于绘制菜单边框的字符类型。请参阅 popup-border-lines,了解 border-lines 的可能值。

message-command-style 样式
设置状态行消息命令样式。这用于 vi(1) 键,并在命令模式下用于命令提示符。有关如何指定样式,请参阅“样式”部分。

message-line [0 | 1 | 2 | 3 | 4]
设置显示状态行消息和命令提示符的行。

message-style 样式
设置状态行消息样式。这用于消息和命令提示符。有关如何指定样式,请参阅“样式”部分。

mouse [on | off]
如果为 on,则 tmux 捕获鼠标并允许将鼠标事件绑定为按键绑定。有关详细信息,请参阅“鼠标支持”部分。

prefix 键
设置作为前缀键接受的键。除了在“按键绑定”下列出的标准键之外,prefix 还可以设置为特殊键“None”,以不设置前缀。

prefix2 键
设置作为辅助前缀键接受的键。与 prefix 类似,prefix2 也可以设置为“None”。

prefix-timeout 时间
设置在输入前缀之后,tmux 等待的时间(以毫秒为单位),然后取消前缀。可以设置为零以禁用任何超时。

prompt-cursor-colour 颜色
设置命令提示符中光标的颜色。

prompt-cursor-style 样式
设置命令提示符中光标的样式。请参阅 cursor-style 选项,了解可用的样式。

renumber-windows [on | off]
如果为 on,当会话中的窗口关闭时,自动按数字顺序重新编号其他窗口。这会考虑是否设置了 base-index 选项。如果为 off,则不重新编号窗口。

repeat-time 时间
允许在指定的时间(以毫秒为单位)内,无需再次按前缀键即可输入多个命令(默认值为 500)。是否可以重复按键,可以通过使用 -r 标志在 bind-key 中绑定时进行设置。重复功能默认启用,用于绑定到 resize-pane 命令的默认按键。另请参阅 initial-repeat-time 选项。

set-titles [on | off]
如果存在,则尝试使用 tsl 和 fsl terminfo(5) 条目来设置客户端终端标题。如果终端似乎是 xterm(1),tmux 会自动将其设置为 \e]0;...\007 序列。此选项默认情况下处于关闭状态。

set-titles-string string
如果 set-titles 处于开启状态,则用于设置客户端终端标题的字符串。格式将被扩展,请参阅“FORMATS”部分。

silence-action [any | none | current | other]
当 monitor-silence 处于开启状态时,设置窗口静默时的操作。这些值与 activity-action 的值相同。

status [off | on | 2 | 3 | 4 | 5]
显示或隐藏状态行,或指定其大小。使用 on 将显示高度为一行的状态行;2、3、4 或 5 表示更多行。

status-format[] format
指定要用于状态行每一行的格式。默认情况下,从各种单独的状态选项构建顶部状态行。

status-interval interval
每隔 interval 秒更新状态行。默认情况下,将每 15 秒更新一次。设置为零将禁用间隔处的重绘。

status-justify [left | centre | right | absolute-centre]
设置状态行中窗口列表的位置:左侧、居中或右侧。centre 将窗口列表放置在可用空闲空间的相对中心;absolute-centre 使用整个水平空间的中心。

status-keys [vi | emacs]
在状态行中使用 vi 或 emacs 样式的键绑定,例如在命令提示符处。默认值为 emacs,除非设置了 VISUAL 或 EDITOR 环境变量,并且其中包含字符串“vi”。

status-left string
在状态行的左侧显示字符串(默认情况下为会话名称)。字符串将传递给 strftime(3)。另请参阅“FORMATS”和“STYLES”部分。

#(sysctl vm.loadavg)
#[fg=yellow,bold]#(apm -l)%%#[default] [#S]

默认值为“[\#S]”。

status-left-length length
设置状态行左侧组件的最大长度。默认值为 10。

status-left-style style
设置状态行左侧部分的样式。关于如何指定样式,请参阅“STYLES”部分。

status-position [top | bottom]
设置状态行的位置。

status-right string
在状态行的右侧显示字符串。默认情况下,将显示当前面板标题(用双引号括起来)、日期和时间。与 status-left 类似,字符串将传递给 strftime(3),并且字符对将被替换。

status-right-length length
设置状态行右侧组件的最大长度。默认值为 40。

status-right-style style
设置状态行右侧的样式。关于如何指定样式,请参阅“STYLES”部分。

status-style style
设置状态行样式。关于如何指定样式,请参阅“STYLES”部分。

update-environment[] 变量

设置要在创建新会话或附加到现有会话时复制到会话环境中的环境变量列表。 任何在源环境中不存在的变量都将被从会话环境中删除(就像使用 -r 标志的 set-environment 命令一样)。

visual-activity [on | off | both]

如果设置为 on,则当启用 monitor-activity 窗口选项的窗口中发生活动时,将显示一条消息而不是发送响铃。 如果设置为 both,则会产生响铃和消息。

visual-bell [on | off | both]

如果设置为 on,则在启用了 monitor-bell 窗口选项的窗口中,将显示一条消息而不是将其传递到终端(通常会发出声音)。 如果设置为 both,则会产生响铃和消息。 另请参阅 bell-action 选项。

visual-silence [on | off | both]

如果启用了 monitor-silence,则在给定的窗口中,在间隔时间到期后打印一条消息,而不是发送响铃。 如果设置为 both,则会产生响铃和消息。

word-separators 字符串

设置会话对哪些字符被视为单词分隔符,用于复制模式中“下一个单词”和“前一个单词”命令。

可用的窗口选项是:

aggressive-resize [on | off]

积极调整所选窗口的大小。 这意味着 tmux 将调整窗口的大小,使其与最小或最大的会话(请参阅 window-size 选项)的大小相同,该会话是当前窗口,而不是它所附加的会话。 窗口可以在其他会话中的当前窗口更改时调整大小;此选项适用于支持 SIGWINCH 的全屏程序,但不适用于交互式程序,例如 shell。

automatic-rename [on | off]

控制自动窗口重命名。 当启用此设置时,tmux 将使用 automatic-rename-format 中指定的格式自动重命名窗口。 当使用 new-window 或 new-session 在创建时指定名称,或者稍后使用 rename-window,或者使用终端转义序列时,此标志对于单个窗口将自动禁用。 它可以全局禁用,如下所示:

set-option -wg automatic-rename off

automatic-rename-format 格式

启用 automatic-rename 选项时使用的格式(请参阅“FORMATS”部分)。

clock-mode-colour 颜色

设置时钟颜色。

clock-mode-style [12 | 24 | 12-with-seconds | 24-with-seconds]

设置时钟小时格式。

fill-character 字符

设置用于填充终端中未被窗口使用的区域的字符。

main-pane-height 高度
main-pane-width 宽度

设置 main-horizontal、main-horizontal-mirrored、main-vertical 或 main-vertical-mirrored 布局中主(左侧或顶部)窗格的高度或宽度。 如果以“%”结尾,则这是窗口大小的百分比。

copy-mode-match-style 样式

设置复制模式中搜索匹配的样式。 有关如何指定样式,请参阅“STYLES”部分。


copy-mode-mark-style style
设置复制模式下包含标记的行的样式。 关于如何指定样式,请参阅“样式”部分。

copy-mode-current-match-style style
设置复制模式下当前搜索匹配项的样式。 关于如何指定样式,请参阅“样式”部分。

copy-mode-position-format format
复制模式下位置指示器的格式。

mode-keys [vi | emacs]
在复制模式中使用 vi 或 emacs 样式的键绑定。 默认值为 emacs,除非 VISUAL 或 EDITOR 包含“vi”。

copy-mode-position-style style
设置复制模式下位置指示器的样式。 关于如何指定样式,请参阅“样式”部分。

copy-mode-selection-style style
设置复制模式下选择区域的样式。 关于如何指定样式,请参阅“样式”部分。

mode-style style
设置窗口模式的样式。 关于如何指定样式,请参阅“样式”部分。

monitor-activity [on | off]
监视窗口中的活动。 具有活动的窗口会在状态行中突出显示。

monitor-bell [on | off]
监视窗口中的响铃事件。 具有响铃事件的窗口会在状态行中突出显示。

monitor-silence [interval]
监视窗口中在指定秒数间隔内没有活动。 在指定间隔内没有活动的窗口会在状态行中突出显示。 间隔为零会禁用监视。

other-pane-height height
设置主水平和主水平镜像布局中其他窗格(非主窗格)的高度。 如果此选项设置为 0(默认值),则它将不起作用。 如果同时设置了 main-pane-height 和 other-pane-height 选项,则主窗格将变得更高,以使其他窗格达到指定的总高度,但不会缩小。 如果在末尾添加“%”,则此值将成为窗口大小的百分比。

other-pane-width width
类似于 other-pane-height,但在主垂直和主垂直镜像布局中设置其他窗格的宽度。

pane-active-border-style style
设置当前活动窗格的窗格边框样式。 关于如何指定样式,请参阅“样式”部分。 属性将被忽略。

pane-base-index index
类似于 base-index,但设置窗格编号的起始索引。

pane-border-format format
设置窗格边框状态行中显示的文本。

pane-border-indicators [off | colour | arrows | both]
在具有正好两个窗格的窗口中,通过仅对边框的一半进行着色、通过显示箭头标记、通过绘制两者或两者都不绘制来指示活动窗格。

pane-border-lines type
设置用于绘制窗格边框的字符类型。 类型可以是以下之一:

single  使用 ACS 或 UTF-8 字符的单线

double  使用 UTF-8 字符的双线

heavy   使用 UTF-8 字符的粗线

simple  简单的 ASCII 字符

number  窗格编号

spaces  空格字符

如果不支持 UTF-8,则“double”和“heavy”将回退到标准的 ACS 绘图字符。

pane-border-status [off | top | bottom]
关闭面板边框状态行或设置其位置。

pane-border-style style
设置除当前活动面板之外的面板的边框样式。有关如何指定样式,请参见“样式”部分。属性将被忽略。

popup-style style
设置弹出窗口样式。有关如何指定样式,请参见“样式”部分。属性将被忽略。

popup-border-style style
设置弹出窗口边框样式。有关如何指定样式,请参见“样式”部分。属性将被忽略。

popup-border-lines type
设置用于绘制弹出窗口边框的字符类型。type 可以是以下之一:

single 单行,使用 ACS 或 UTF-8 字符(默认值)

rounded 具有圆角的单行变体,使用 UTF-8 字符

double 双行,使用 UTF-8 字符

heavy 粗线,使用 UTF-8 字符

simple 简单的 ASCII 字符

padded 简单的 ASCII 空格字符

none 无边框

如果不支持 UTF-8,'double' 和 'heavy' 将回退到标准的 ACS 线条绘制。

pane-scrollbars [off | modal | on]
启用后,将在每个面板的左侧或右侧显示基于字符的滚动条。滚动条中填充的部分,称为“滑块”,表示面板内容的可见部分的位置和大小。

如果设置为 on,滚动条将始终可见。如果设置为 modal,滚动条仅在面板处于复制模式或查看模式时才会显示。当滚动条可见时,面板会被缩小滚动条的宽度,并且面板中的文本将被重新排版。如果设置为 modal,则只有在滚动条可见时才会缩小面板。

另请参见 pane-scrollbars-style。

pane-scrollbars-style style
设置滚动条样式。有关如何指定样式,请参见“样式”部分。前景色用于滑块,背景色用于滚动条的其余部分。width 属性设置滚动条的宽度,pad 属性设置滚动条和面板之间的填充。其他属性将被忽略。

pane-scrollbars-position [left | right]
设置面板滚动条显示的面板侧边。

pane-status-current-style style
设置当前活动面板的状态行样式。有关如何指定样式,请参见“样式”部分。

pane-status-style style
设置单个面板的状态行样式。有关如何指定样式,请参见“样式”部分。

session-status-current-style style
设置当前活动会话的状态行样式。有关如何指定样式,请参见“样式”部分。

session-status-style style
设置单个会话的状态行样式。有关如何指定样式,请参见“样式”部分。

tiled-layout-max-columns number
设置平铺布局中的最大列数。值为 0(默认值)表示没有限制。设置限制后,面板的排列方式将不超过此列数,并将其他面板堆叠在额外的行中。

window-status-activity-style 样式
设置带有活动提示的窗口的状态行样式。有关如何指定样式,请参见“样式”部分。

window-status-bell-style 样式
设置带有铃声提示的窗口的状态行样式。有关如何指定样式,请参见“样式”部分。

window-status-current-format 字符串
类似于 window-status-format,但它是当前窗口所使用的格式。

window-status-current-style 样式
设置当前活动窗口的状态行样式。有关如何指定样式,请参见“样式”部分。

window-status-format 字符串
设置状态行窗口列表中显示的窗口的格式。请参见“格式”和“样式”部分。

window-status-last-style 样式
设置上次活动窗口的状态行样式。有关如何指定样式,请参见“样式”部分。

window-status-separator 字符串
设置状态行中窗口之间的分隔符。默认值是一个空格字符。

window-status-style 样式
设置单个窗口的状态行样式。有关如何指定样式,请参见“样式”部分。

window-size largest | smallest | manual | latest
配置 tmux 确定窗口大小的方式。如果设置为 largest,则使用最大的已连接会话的大小;如果设置为 smallest,则使用最小的大小。如果设置为 manual,则窗口的大小将从 default-size 选项中设置,并且窗口将自动调整大小。如果设置为 latest,则 tmux 使用最近活动客户端的大小。
另请参见 resize-window 命令和 aggressive-resize 选项。

wrap-search [on | off]
如果设置此选项,搜索将围绕窗格内容的末尾进行。默认值为 on。

可用的窗格选项如下:

allow-passthrough [on | off | all]
允许窗格中的程序使用终端转义序列(\ePtmux;...\e\\)绕过 tmux。如果设置为 on,则仅当窗格可见时才允许使用 passthrough 序列。如果设置为 all,即使窗格不可见,也允许使用。

allow-rename [on | off]
允许窗格中的程序使用终端转义序列(\ek...\e\\)更改窗口名称。

allow-set-title [on | off]
允许窗格中的程序使用终端转义序列(\e]2;...\e\\ 或 \e]0;...\e\\)更改标题。

alternate-screen [on | off]
此选项配置窗格中的程序是否可以使用终端的替代屏幕功能,该功能允许使用 terminfo(5) 中的 smcup 和 rmcup 功能。替代屏幕功能在交互式应用程序启动时保留窗口的内容,并在退出时将其恢复,因此在应用程序启动之前可见的任何输出在应用程序退出后会以未更改的形式重新出现。

cursor-colour 颜色
设置光标的颜色。

cursor-style 样式
设置光标的样式。可用的样式包括:default、blinking-block、block、blinking-underline、underline、blinking-bar、bar。

pane-colours[] colour
默认的调色板。数组中的每个条目定义了 tmux 在请求具有该索引的颜色时使用的颜色。索引可以是 0 到 255。

remain-on-exit [on | off | failed]
设置为此标志的窗格在其中运行的程序退出时不会被销毁。如果设置为 failed,则仅当程序的退出状态不为零时。可以使用 respawn-pane 命令重新激活该窗格。

remain-on-exit-format string
设置启用 remain-on-exit 时,退出窗格底部显示的文本。

scroll-on-clear [on | off]
当整个屏幕被清除并且此选项为 on 时,在清除屏幕内容之前,将屏幕内容滚动到历史记录中。

synchronize-panes [on | off]
将输入复制到同一窗口中所有其他也启用此选项的窗格(仅适用于不在任何模式中的窗格)。

window-active-style style
设置窗格为活动窗格时的样式。关于如何指定样式,请参阅“样式”部分。

window-style style
设置窗格样式。关于如何指定样式,请参阅“样式”部分。

钩子

tmux 允许在各种触发器上运行命令,这些触发器称为钩子。大多数 tmux 命令都有一个 after 钩子,并且还有一些不与命令关联的钩子。

钩子存储为数组选项,数组的成员在触发钩子时按顺序执行。与选项一样,不同的钩子可以是全局的,或者属于会话、窗口或窗格。可以使用 set-hook 或 set-option 命令配置钩子,并可以使用 show-hooks 或 show-options -H 显示。以下两个命令是等效的:

set-hook -g pane-mode-changed[42] 'set -g status-left-style bg=red'
set-option -g pane-mode-changed[42] 'set -g status-left-style bg=red'

在不指定数组索引的情况下设置钩子会清除钩子,并将数组的第一个成员设置为钩子。

命令的 after 钩子在其完成后运行,但当命令作为钩子的一部分运行时除外。它们使用“after-”前缀命名。例如,以下命令在每次 split-window 之后都会添加一个钩子,以选择 even-vertical 布局:

set-hook -g after-split-window "selectl even-vertical"

如果命令失败,将触发“command-error”钩子。例如,这可用于写入日志文件:

set-hook -g command-error "run-shell \"echo 'a tmux command failed' >>/tmp/log\""

“控制模式”部分中列出的所有通知都是钩子(没有参数),除了 %exit。以下是可用的其他钩子:

alert-activity
当窗口有活动时运行。请参阅 monitor-activity。

alert-bell
当窗口收到响铃时运行。请参阅 monitor-bell。

alert-silence
当窗口处于静默状态时运行。请参阅 monitor-silence。

client-active
当客户端成为其会话的最新活动客户端时运行。

client-attached         当客户端附加时运行。

client-detached         当客户端分离时运行。

client-focus-in         当焦点进入客户端时运行。

client-focus-out        当焦点离开客户端时运行。

client-resized          当客户端调整大小时运行。

client-session-changed  当客户端的附加会话发生更改时运行。

client-light-theme      当客户端切换到浅色主题时运行。

client-dark-theme       当客户端切换到深色主题时运行。

command-error           当命令失败时运行。

pane-died               当在窗格中运行的程序退出,但由于 remain-on-exit 选项已启用,因此窗格未关闭时运行。

pane-exited             当在窗格中运行的程序退出时运行。

pane-focus-in           当焦点进入窗格时运行,如果 focus-events 选项已启用。

pane-focus-out          当焦点离开窗格时运行,如果 focus-events 选项已启用。

pane-set-clipboard      当使用 xterm(1) 转义序列设置终端剪贴板时运行。

session-created         当创建新会话时运行。

session-closed          当会话关闭时运行。

session-renamed         当会话重命名时运行。

window-layout-changed   当窗口布局更改时运行。

window-linked           当窗口链接到会话中时运行。

window-renamed          当窗口重命名时运行。

window-resized          当窗口调整大小时运行。这可能是在 client-resized 钩子运行之后。

window-unlinked         当窗口从会话中取消链接时运行。

钩子通过以下命令进行管理:

set-hook [-agpRuw] [-t target-pane] hook-name [command]

如果不使用 -R,则设置(或使用 -u 取消设置)钩子 hook-name 为 command。标志与 set-option 中的标志相同。

使用 -R,立即运行 hook-name。

show-hooks [-gpw] [-t target-pane] [hook]

显示钩子。标志与 show-options 中的标志相同。

鼠标支持

如果启用了 mouse 选项(默认情况下为关闭),则 tmux 允许将鼠标事件绑定为按键。 每个按键的名称由鼠标事件(例如 ‘MouseUp1’)和位置后缀组成,位置后缀为以下之一:

Pane             窗格的内容
Border           窗格边框
Status           状态行窗口列表
StatusLeft       状态行的左侧部分
StatusRight      状态行的右侧部分
StatusDefault    状态行的任何其他部分
ScrollbarSlider  滚动条滑块
ScrollbarUp      滚动条滑块上方
ScrollbarDown    滚动条滑块下方

可用的鼠标事件如下:

WheelUp       WheelDown
MouseDown1    MouseUp1      MouseDrag1   MouseDragEnd1
MouseDown2    MouseUp2      MouseDrag2   MouseDragEnd2
MouseDown3    MouseUp3      MouseDrag3   MouseDragEnd3
SecondClick1  SecondClick2  SecondClick3
DoubleClick1  DoubleClick2  DoubleClick3
TripleClick1  TripleClick2  TripleClick3

‘SecondClick’ 事件是在双击的第二次单击时触发的,即使可能存在第三次单击,此时将触发 ‘TripleClick’ 而不是 ‘DoubleClick’。


每个条目都应以位置作为后缀,例如“MouseDown1Status”。

可以使用特殊标记“{mouse}”或“=”作为鼠标按键绑定中命令的目标窗口或目标面板。它会解析为发生鼠标事件的窗口或面板(例如,状态行中发生按钮 1 释放事件的窗口,用于“MouseUp1Status”绑定,或者发生滚轮滚动事件的面板,用于“WheelDownPane”绑定)。

可以使用 send-keys -M 标志将鼠标事件转发到面板。

默认的按键绑定允许使用鼠标来选择和调整面板大小,复制文本以及使用状态行更改窗口。如果启用了鼠标选项,则这些绑定将生效。

格式

某些命令接受带有格式参数的 -F 标志。这是一个字符串,用于控制命令的输出格式。格式变量被包含在“#{”和“}”中,例如“#{session_name}”。可能的变量列在下面的表中,或者可以使用 tmux 选项的名称来获取选项的值,也可以使用环境变量的名称。某些变量具有较短的别名,例如“#S”;“##”将被替换为单个“#”,“#,”将被替换为“,”,“#}”将被替换为“}”。

可以使用“?”前缀来使用条件。对于每对两个参数,如果第一个参数中的变量存在且不为零,则选择第二个参数,否则继续。如果没有任何来自成对参数的条件匹配,则选择默认值。如果存在未配对的最后一个参数,则该参数为默认值。如果不存在,则默认值为空字符串。例如,“#{?session_attached,attached,not attached}”如果会话已附加,则包含字符串“attached”,如果未附加,则包含字符串“not attached”,或者“#{?automatic-rename,yes,no}”如果启用了 automatic-rename,则包含“yes”,否则包含“no”。“#{?#{n:window_name},#{window_name} - }”如果存在窗口名称,则包含带破折号分隔符的窗口名称,或者如果窗口名称为空,则包含空字符串。“#{?session_format,format1,window_format,format2,format3}”对于会话格式,包含 format1,对于窗口格式,包含 format2,或者对于既不是会话格式也不是窗口格式,包含 format3。条件可以任意嵌套。在条件内部,必须将“,”和“}”转义为“#,”和“#}”,除非它们是“#{...}”替换的一部分。例如:

`#{?pane_in_mode,#[fg=white,bg=red],#[fg=red,bg=white]}#W`

可以使用“==”、“!=”、“<”、“>”、“<=”或“>=”和冒号作为前缀,来表示字符串比较的两个逗号分隔的备选项。例如,“#{==:#{host},myhost}”如果正在运行在“myhost”上,则将被替换为“1”,否则将被替换为“0”。“||”和“&&”如果任何或所有逗号分隔的备选项都为真,则计算结果为真,例如“#{||:#{pane_in_mode},#{alternate_on}}”。“!”如果该值为假,则计算结果为真,反之亦然,例如“#{!:#{pane_in_mode}}”。“!!”将值转换为规范的布尔形式,为真时为 1,为假时为 0,例如“#{!!:non-empty string}”计算结果为 1。

‘m’表示一个 glob(7) 模式或正则表达式比较。第一个参数是模式,第二个参数是要比较的字符串。一个可选参数指定标志:‘r’表示模式是正则表达式,而不是默认的 glob(7) 模式,‘i’表示忽略大小写。例如:‘#{m:*foo*,#{host}}’或‘#{m/ri:^A,MYVAR}’。‘C’在窗格内容中搜索 glob(7) 模式或正则表达式,如果未找到则返回零,如果找到则返回行号。与‘m’类似,‘r’标志表示搜索正则表达式,‘i’忽略大小写。例如:‘#{C/r:^Start}’。

可以通过在两个用逗号分隔的替代项前加上‘e’和一个运算符来执行数值运算。可以提供一个可选的‘f’标志,用于使用浮点数,否则使用整数。这后面可以跟一个数字,表示结果的小数位数。可用的运算符是:加法‘+’、减法‘-’、乘法‘*’、除法‘/’、模运算‘m’或‘%’(请注意,在也由 strftime(3) 扩展的格式中,必须将‘%’转义为‘%%’),以及数值比较运算符‘==’、‘!=’、‘<’、‘<=’、‘>’和‘>=’。例如,‘#{e|*|f|4:5.5,3}’将 5.5 乘以 3,结果保留四位小数,‘#{e|%%:7,3}’返回 7 和 3 的模。‘a’将数值参数替换为其 ASCII 等效值,因此‘#{a:98}’的结果为‘b’。‘c’将 tmux 颜色替换为其六位十六进制 RGB 值。

可以通过在其前面加上一个‘=’、一个数字和一个冒号来限制结果字符串的长度。正数从字符串的开头开始计数,负数从结尾开始计数,因此‘#{=5:pane_title}’将最多包含窗格标题的前五个字符,或者‘#{=-5:pane_title}’包含最后的五个字符。如果已对长度进行修剪,则可以提供后缀或前缀作为第二个参数——如果提供了,则将其附加到字符串的末尾或添加到字符串的开头,例如‘\#{=/5/...:pane\_title}’将在窗格标题超过五个字符时附加‘...’。类似地,‘p’将字符串填充到给定的宽度,例如‘\#{p10:pane\_title}’将导致宽度至少为 10 个字符。正宽度从左侧填充,负宽度从右侧填充。‘n’扩展为变量的长度,‘w’扩展为变量的显示宽度,例如‘#{n:window_name}’。‘R’按第二个参数给定的次数重复第一个参数,因此‘#{R:a,3}’的结果为‘aaa’。

在时间变量前添加“t:”前缀,会将其转换为字符串,因此,如果“\#{window_activity}”返回“1445765102”,则“\#{t:window_activity}”返回“Sun Oct 25 09:25:02 2015”。添加“p(”`t/p`”)将使用更短但准确性较低的时间格式来表示过去的时间。可以使用“f”后缀指定自定义格式(请注意,“%”必须转义为“%%”,如果格式是单独传递给 strftime(3) 的,例如在 status-left 选项中):`#{t/f/%%H#:%%M:window_activity}`,请参阅 strftime(3)。

“b:”和“d:”前缀分别是 basename(3) 和 dirname(3) 变量。 “q:”将转义 sh(1) 特殊字符,或者带有“h”后缀,转义井号字符(因此“#”变为“##”)。 “E:”将两次扩展格式,例如“#{E:status-left}”是扩展 status-left 选项的内容,而不是选项本身。“T:”类似于“E:”,但也会扩展 strftime(3) 说明符。“S:”、“W:”、“P:”或“L:”将循环遍历每个会话、窗口、窗格或客户端,并为每个会话、窗口、窗格或客户端插入一次格式。“L:”、“S:”和“W:”可以采用可选的排序参数“/i”、“/n”、“/t”来按索引、名称或上次活动时间进行排序;此外,还可以使用“/r”进行反向排序。“/r”也可以与“P:”一起使用,以按窗格索引反向排序。例如,S/nr:以反向顺序按名称对会话进行排序。对于每个会话、窗口、窗格或客户端,可以提供两个用逗号分隔的格式:第二个格式用于当前窗口、活动窗格或活动会话。例如,要获取格式化为状态行样式的窗口列表:

#{W:#{E:window-status-format} ,#{E:window-status-current-format} }

“N:”检查窗口(没有后缀或带有“w”后缀)或会话(带有“s”后缀)名称是否存在,例如“N/w:foo”如果存在名为“foo”的窗口,则替换为 1。

以“s/foo/bar/:”形式的前缀将在整个字符串中将“foo”替换为“bar”。第一个参数可以是扩展正则表达式,并且可以添加一个可选的“i”参数来忽略大小写,例如“s/a(.)/\1x/i:”会将“abABab”更改为“bxBxbx”。可以使用不同的分隔符字符,以避免与模式中文字斜杠冲突。例如,“s|foo/|bar/|:”会将“foo/”替换为“bar/”。

多个修饰符可以用分号 (;) 分隔,例如 ‘#{T;=10:status-left}’,这将限制生成的 strftime(3) 扩展字符串的最大长度为 10 个字符。

此外,可以使用 ‘#()’ 插入 shell 命令输出的最后一行。例如,‘#(uptime)’ 将插入系统的运行时间。在构建格式时,tmux 不会等待 ‘#()’ 命令完成;而是使用运行相同命令的先前结果,或者如果命令尚未运行,则使用占位符。如果命令尚未退出,将使用输出的最新一行,但状态行不会超过每秒更新一次。命令使用 /bin/sh 执行,并设置 tmux 全局环境(请参阅“全局和会话环境”部分)。

‘l’ 指定应将字符串逐字解释,而不进行扩展。例如,‘#{l:#{?pane_in_mode,yes,no}}’ 将替换为 ‘#{?pane_in_mode,yes,no}’。

以下变量可用(在适用时):

变量名称    别名    替换为

active_window_index    会话中活动窗口的索引
alternate_on    1,如果窗格处于备用屏幕
alternate_saved_x    保存的备用屏幕中的光标 X
alternate_saved_y    保存的备用屏幕中的光标 Y
buffer_created    创建缓冲区的时间
buffer_full    完整的缓冲区内容
buffer_name    缓冲区的名称
buffer_sample    缓冲区的开头示例
buffer_size    指定缓冲区的大小(以字节为单位)
client_activity    客户端上次活动的时间
client_cell_height    每个客户端单元的像素高度
client_cell_width    每个客户端单元的像素宽度
client_control_mode    1,如果客户端处于控制模式
client_created    客户端创建的时间
client_discarded    客户端滞后时丢弃的字节数
client_flags    客户端标志列表
client_height    客户端高度
client_key_table    当前按键表
client_last_session    客户端上次会话的名称
client_name    客户端名称
client_pid    客户端进程的 PID
client_prefix    1,如果已按下前缀键
client_readonly    1,如果客户端为只读
client_session    客户端的会话名称
client_termfeatures    客户端的终端功能(如果有)
client_termname    客户端的终端名称
client_termtype    客户端的终端类型(如果有)
client_tty    客户端的伪终端
client_uid    客户端进程的 UID
client_user    客户端进程的用户
client_utf8    1,如果客户端支持 UTF-8
client_width    客户端宽度
client_written    写入客户端的字节数
command    正在使用的命令的名称(如果有)
command_list_alias    如果列出命令,则为命令别名
command_list_name    如果列出命令,则为命令名称
command_list_usage    如果列出命令,则为命令用法
config_files    加载的配置文件列表
cursor_blinking    1,如果光标正在闪烁
copy_cursor_hyperlink    复制模式下光标下的超链接
copy_cursor_line    复制模式下光标所在的行
copy_cursor_word    复制模式下的光标
copy_cursor_x    复制模式下光标的 X 位置
copy_cursor_y    复制模式下光标的 Y 位置
current_file    当前配置文件
cursor_character    窗格中光标处的字符
cursor_colour    窗格中的光标颜色
cursor_flag    窗格光标标志
cursor_shape    窗格中的光标形状
cursor_very_visible    1,如果光标处于非常可见的模式
cursor_x    窗格中光标的 X 位置
cursor_y    窗格中光标的 Y 位置
history_bytes    窗口历史记录中的字节数
history_limit    最大窗口历史记录行数
history_size    历史记录的大小(以行为单位)
hook    正在运行的钩子的名称(如果有)
hook_client    运行钩子的客户端的名称(如果有)
hook_pane    运行钩子的窗格的 ID(如果有)
hook_session    运行钩子的会话的 ID(如果有)
hook_session_name    运行钩子的会话的名称(如果有)
hook_window    运行钩子的窗口的 ID(如果有)
hook_window_name    运行钩子的窗口的名称(如果有)
host    #H    本地主机的hostname
host_short    #h    本地主机的hostname(没有域名)
insert_flag    窗格插入标志
keypad_cursor_flag    窗格小键盘光标标志
keypad_flag    窗格小键盘标志
layout_flag    布局标志
line_count    行数
mouse_mode    鼠标模式
mouse_pos    鼠标位置
mouse_selection    鼠标选择
name    名称
network_address    网络地址
network_port    网络端口
os_name    操作系统名称
os_version    操作系统版本
paste_mode    粘贴模式
pid    进程 ID
plugin_name    插件名称
plugin_version    插件版本
prefix    前缀
prefix_mode    前缀模式
profile    配置文件
quote_mode    引号模式
reason    原因
refresh_interval    刷新间隔
refresh_time    上次刷新时间
root_directory    根目录
row    行
scroll_mode    滚动模式
server_name    服务器名称
server_version    服务器版本
session_name    #S    会话名称
session_path    会话的工作目录
session_stack    会话中最近使用的窗口索引
session_width    会话宽度
show_links    显示链接
show_mode    显示模式
show_path    显示路径
show_scroll    显示滚动条
show_title    显示标题
size    大小
socket_path    服务器套接字路径
sixel_support    1,如果服务器支持 SIXEL
start_time    服务器启动时间
status_banner    状态横幅
status_bg    状态背景
status_color    状态颜色
status_fg    状态前景
status_interval    状态间隔
status_left    状态左侧
status_left_interval    状态左侧间隔
status_left_length    状态左侧长度
status_left_repeat    状态左侧重复
status_right    状态右侧
status_right_interval    状态右侧间隔
status_right_length    状态右侧长度
status_right_repeat    状态右侧重复
status_style    状态样式
status_utf8    状态 UTF8
style    样式
style_attr    样式属性
style_bg    样式背景
style_color    样式颜色
style_fg    样式前景
style_key    样式键
style_name    样式名称
style_reverse    样式反转
style_void    样式空
table_columns    表列
table_rows    表行
terminal_name    终端名称
terminal_type    终端类型
theme    主题
time_format    时间格式
tmux_version    tmux 版本
uid    服务器 UID
user    服务器用户
version    服务器版本
warning_level    警告级别
window_format    #W    窗口名称
window_id    唯一的窗口 ID
window_index    #I    窗口索引
window_name    #W    窗口名称
window_width    窗口宽度
window_zoomed    1,如果窗口已缩放
wrap_flag    窗格换行标志

样式

tmux 提供了各种选项来指定界面各个方面的颜色和属性,例如状态行中的 `status-style`。 此外,嵌入式样式可以通过在 `status-left` 等格式选项中将它们括在 `#[` 和 `]` 中来指定。

样式可以是单个术语 `default`,用于指定默认样式(该样式可能来自一个选项,例如状态行中的 `status-style`),或者是由空格或逗号分隔的以下各项:

`fg=colour`
设置前景色。 颜色是以下之一: `black`、`red`、`green`、`yellow`、`blue`、
`magenta`、`cyan`、`white`;如果支持,则为明亮变体 `brightblack`、`brightred` 等;
来自 256 色调的 `colour0` 到 `colour255`;`default` 表示默认颜色;`terminal` 表示终端默认颜色;或者像 `"#ffffff"` 这样的十六进制 RGB 字符串。

bg=colour

设置背景颜色。

us=colour

设置下划线颜色。

none

设置无属性(关闭所有活动属性)。

acs, bright (或 bold), dim, underscore, blink, reverse, hidden, italics, overline, strikethrough,
double-underscore, curly-underscore, dotted-underscore, dashed-underscore

设置一个属性。任何属性都可以使用“no”前缀来取消设置。acs 是 终端的替代字符集。

align=left (或 noalign), align=centre, align=right

如果适用,将文本对齐到可用空间的左侧、中心或右侧。

fill=colour

如果适用,用背景颜色填充可用空间。

list=on, list=focus, list=left-marker, list=right-marker, nolist

标记各种窗口列表组件在 status-format 选项中的位置: list=on 标记列表的开始;list=focus 是如果整个列表无法适应可用空间,则应 保持在焦点中的列表部分(通常是当前窗口);list=left-marker 和 list=right-marker 标记用于标记文本,表明如果可用空间不足,则文本已从左侧或右侧进行截断。

noattr

不要从默认样式复制属性。

push-default, pop-default

将当前的颜色和属性存储为默认值,或重置为先前的默认值。 push-default 会影响之后对默认终端的任何使用,直到 pop-default。 只能 推送一个默认值(每个 push-default 都会替换先前的已保存默认值)。

range=left, range=right, range=session|X, range=window|X, range=pane|X, range=user|X, norange

标记 status-format 选项中的鼠标事件范围。当在 range=left 或 range=right 范围内发生鼠标事件时,将触发“StatusLeft”和“StatusRight”键绑定。

range=session|X、range=window|X 和 range=pane|X 是用于会话、窗口或
窗格的范围;它们会触发“Status”鼠标键,目标会话、窗口或窗格由“X”参数给出。 “X”是一个会话 ID、当前会话中的窗口索引或一个窗格 ID。对于这些,mouse_status_range 格式变量将被设置为“session”、“window”或“pane”。

range=user|X 是用户定义的范围;它会触发“Status”鼠标键。 参数
“X”将在 mouse_status_range 格式变量中提供。 “X”的长度最多为 15 个字节。

set-default

将当前的颜色和属性设置为默认值,覆盖任何先前的默认值。 无法恢复先前的默认值。

示例:

fg=yellow bold underscore blink
bg=black,fg=default,noreverse

名称和标题

tmux 区分名称和标题。窗口和会话都有名称,可用于在目标中指定它们,并且在状态行和各种列表中显示:名称是 tmux 用于窗口或会话的标识符。 只有窗格才有标题。窗格的标题通常由在窗格中运行的程序通过转义序列设置(就像它会在 X(7) 中设置 xterm(1) 窗口标题一样)。 窗口本身没有标题——窗口的标题是其活动窗格的标题。 tmux 可能会设置运行客户端的终端的标题,请参阅 set-titles 选项。

会话的名称使用 new-sessionrename-session 命令设置。窗口的名称可以使用以下方式设置:

一个命令参数(例如 -n 用于 new-windownew-session)。

一个转义序列(如果启用了 allow-rename 选项):

$ printf '\033kWINDOW_NAME\033\\'

自动重命名,它将名称设置为窗口中活动窗格中的活动命令。请参阅 automatic-rename 选项。

当窗格首次创建时,其标题是主机名。窗格的标题可以通过标题设置转义序列来设置,例如:

$ printf '\033]2;My Title\033\\'

它也可以使用 select-pane -T 命令进行修改。

全局和会话环境

服务器启动时,tmux 会将环境复制到全局环境中;此外,每个会话都有一个会话环境。当创建窗口时,会话环境和全局环境合并。如果变量同时存在于两者中,则使用会话环境中的值。结果是传递给新进程的初始环境。

可以使用 update-environment 会话选项来更新客户端在创建新会话或重新连接旧会话时会话环境。tmux 还会初始化 TMUX 变量,其中包含一些内部信息,以便可以从内部执行命令,并且 TERM 变量设置为正确的终端设置 'screen'

会话环境和全局环境中的变量可以标记为隐藏。隐藏变量不会传递到新进程的环境中,而是只能由 tmux 本身使用(例如,在格式中,请参见“FORMATS”部分)。

用于更改和查看环境的命令是:

set-environment [-Fhgru] [-t target-session] variable [value]
(别名: setenv)

设置或取消设置环境变量。如果使用 -g,则更改应用于全局环境;否则,它将应用于 target-session 的会话环境。如果存在 -F,则值将作为格式进行扩展。-u 标志取消设置变量。-r 表示在启动新进程之前,应从环境中删除该变量。-h 标记变量为隐藏。

show-environment [-hgs] [-t target-session] [variable]
(别名: showenv)

显示 target-session 或全局环境的环境。如果省略 variable,则显示所有变量。从环境中删除的变量以前缀 '-' 表示。如果使用 -s,则输出格式化为一组 Bourne shell 命令。-h 显示隐藏变量(默认情况下省略)。


状态栏

tmux 包含一个可选的状态栏,该状态栏显示在每个终端的底部。

默认情况下,状态栏已启用,高度为一行(可以通过 status 会话选项禁用或设置为多行),并包含以下内容,从左到右:当前会话的名称,用方括号括起来;窗口列表;活动窗格的标题,用双引号括起来;以及时间和日期。

状态栏的每一行都使用 status-format 选项进行配置。默认情况下,它由三个部分组成:可配置的左侧和右侧部分(可能包含动态内容,例如时间和 shell 命令的输出,请参阅下面的 status-leftstatus-left-lengthstatus-rightstatus-right-length 选项),以及中央的窗口列表。默认情况下,窗口列表按升序数字顺序显示当前会话中存在的窗口的索引、名称和(如果有的话)标志。可以使用 window-status-formatwindow-status-current-format 选项对其进行自定义。标志是附加到窗口名称的以下符号之一:

符号    含义
*         表示当前窗口。
-         标记最后一个窗口(先前选择的窗口)。
#         正在监视窗口活动,并且已检测到活动。
!         正在监视窗口铃声,并且窗口中已发生铃声。
~         该窗口在 `monitor-silence` 间隔内处于静默状态。
M         该窗口包含标记的窗格。
Z         该窗口的活动窗格已缩放。

^ ` 符号与monitor-activity` 窗口选项相关。如果存在警报(铃声、活动或静默),则窗口名称将以反转颜色打印。

状态栏的颜色和属性可以使用 status-style 会话选项配置整个状态栏,并使用 window-status-style 窗口选项配置各个窗口。

状态栏会自动以某个间隔刷新,如果状态栏已更改,则刷新间隔可以通过 status-interval 会话选项进行控制。

与状态栏相关的命令如下:

clear-prompt-history [-T prompt-type]
(别名:clearphist)

清除指定 prompt-type 类型的状态栏提示历史记录。如果省略 -T,则清除所有类型的历史记录。请参阅 command-prompt 以获取 prompt-type 的可能值。

command-prompt [-1bFiklN] [-I inputs] [-p prompts] [-t target-client] [-T prompt-type] [template]

在客户端中打开命令提示符。这可用于从 tmux 内部以交互方式执行命令。

如果指定了 template,则将其用作命令。使用 -F 时,template 将扩展为格式。

如果存在 -I,则 inputs 是一个逗号分隔的列表,其中包含每个提示的初始文本。如果提供了 -p,则 prompts 是一个逗号分隔的列表,这些提示将按顺序显示;否则,将显示单个提示,如果存在 template,则由 template 构造,否则显示 :-l 禁用在逗号处拆分输入和提示,并按字面意义对待它们。

在执行命令之前,字符串“%%”的第一个出现以及所有“%1”的出现都将被第一个提示的响应替换,所有“%2”将被第二个提示的响应替换,依此类推,对于后续的提示。最多可以替换九个提示响应(“%1”到“%9”)。“%%%”类似于“%%”,但任何引号都会被转义。

-1 使提示仅接受一次按键,在这种情况下,结果输入将是一个字符。-k 类似于 -1,但按键被转换为键名。-N 使提示仅接受数字按键。-i 每次提示输入更改时都会执行该命令,而不是在用户退出命令提示符时执行。

-T 告诉 tmux 提示类型。这会影响按下 Tab 键时提供的补全内容。可用的类型是:“command”、“search”、“target”和“window-target”。

以下键在命令提示符中具有特殊含义,具体取决于 status-keys 选项的值:

函数  vi  emacs
取消命令提示  q   Escape
从光标到单词开头的删除 C-w
删除整个命令  d   C-u
从光标到结尾的删除   D   C-k
执行命令    Enter   Enter
从历史记录中获取下一个命令   Down
从历史记录中获取上一个命令   Up
插入顶部粘贴缓冲区   p   C-y
查找补全    Tab Tab
光标左移    h   Left
光标右移    l   Right
光标移动到结尾 $   C-e
光标移动到下一个单词  w   M-f
光标移动到上一个单词  b   M-b
光标移动到开头 0   C-a
转置字符    C-t

使用 -b,提示将在后台显示,并且调用客户端在提示被解除之前不会退出。

confirm-before [-by] [-c confirm-key] [-p prompt] [-t target-client] command
(别名:confirm)
在执行命令之前询问确认。如果提供了 -p,则 prompt 是要显示的提示;否则,将从命令构造一个提示。它可能包含 status-left 选项支持的特殊字符序列。使用 -b,提示将在后台显示,并且调用客户端在提示被解除之前不会退出。-y 更改提示的默认行为(如果仅按下 Enter),以运行该命令。-c 将确认键更改为 confirm-key;默认值为“y”。

display-menu [-OM] [-b border-lines] [-c target-client] [-C starting-choice] [-H selected-style]
[-s style] [-S border-style] [-t target-pane] [-T title] [-x position] [-y position] name
key command [name key command ...]
(别名:menu)
在 target-client 上显示菜单。target-pane 为从菜单运行的任何命令提供目标。

菜单作为一系列参数传递:首先是菜单项名称,其次是快捷键(如果没有,则为空),最后是选择菜单项时要运行的命令。
名称和命令都是格式化的,请参见“格式”和“样式”部分。如果名称以连字符 (-) 开头,则该项将被禁用(显示为浅色),并且不能被选择。
名称可以为空,表示一个分隔线,在这种情况下,快捷键和命令都应省略。

-b 设置用于绘制菜单边框的字符类型。请参见 popup-border-lines,了解边框线的可能值。

-H 设置所选菜单项的样式(参见“样式”)。

-s 设置菜单的样式,-S 设置菜单边框的样式(参见“样式”)。

-T 是菜单标题的格式(参见“格式”)。

-C 设置默认选择的菜单项,如果菜单未绑定到鼠标按键绑定。

-x 和 -y 给出了菜单的位置。两者都可以是行号或列号,也可以是以下特殊值之一:

值    标志    含义
C        两者    终端的中心
R        -x      终端的右侧
P        两者    窗格的左下角
M        两者    鼠标位置
W        两者    状态行上的窗口位置
S        -y      状态行之上或之下的一行

或者是一个格式,它将扩展以下附加变量:

变量名                 替换为

popup_centre_x                在客户端中居中
popup_centre_y                在客户端中居中
popup_height                  菜单或弹出窗口的高度
popup_mouse_bottom            在鼠标底部
popup_mouse_centre_x          在鼠标处水平居中
popup_mouse_centre_y          在鼠标处垂直居中
popup_mouse_top               在鼠标顶部
popup_mouse_x                 鼠标 X 位置
popup_mouse_y                 鼠标 Y 位置
popup_pane_bottom             窗格底部
popup_pane_left               窗格左侧
popup_pane_right              窗格右侧
popup_pane_top                窗格顶部
popup_status_line_y           在状态行之上或之下
popup_width                   菜单或弹出窗口的宽度
popup_window_status_line_x    在状态行上显示窗口的位置
popup_window_status_line_y    在显示窗口的状态行上

每个菜单都由一系列项组成,后跟一个用括号括起来的快捷键。如果菜单太大而无法显示在终端中,则不会显示它。按下快捷键会选择相应的项。如果启用了鼠标并且菜单是从鼠标按键绑定打开的,则释放鼠标按钮时,如果选择了某个项,则选择该项;如果未选择任何项,则关闭菜单。-O 更改此行为,以便即使在未选择任何项的情况下释放鼠标按钮,菜单也不会关闭,并且必须单击鼠标按钮才能选择一个项。

-M 告诉 tmux,菜单应处理鼠标事件;默认情况下,只有通过鼠标按键绑定打开的菜单才这样做。

以下按键可在菜单中使用:

按键  功能
Enter   选择所选项
Up  选择前一个选项
Down    选择下一个选项
q   退出菜单

display-message [-aCIlNpv] [-c target-client] [-d delay] [-t target-pane] [message]
(别名:display)

显示一条消息。如果指定了 -p,则输出会打印到 stdout,否则它会显示在目标客户端的状态行中,持续时间最长为延迟毫秒。如果未指定延迟,则使用 display-time 选项;延迟为零则等待按键按下。如果指定了 -N,则会忽略按键,并且仅在延迟过期后才会关闭。如果指定了 -C,则在显示消息时,面板将继续更新。如果指定了 -l,则消息将按原样打印。否则,消息的格式如“格式”部分所述;信息将从目标面板获取,如果指定了 -t,则从目标面板获取,否则从活动面板获取。

-v 打印详细日志,说明如何解析格式,-a 列出格式变量及其值。

-I 将从 stdin 读取的任何输入转发到由 target-pane 给定的空面板。

display-popup [-BCEkN] [-b border-lines] [-c target-client] [-d start-directory] [-e environment]
[-h height] [-s style] [-S border-style] [-t target-pane] [-T title] [-w width] [-x
position] [-y position] [shell-command [argument ...]]
(别名:popup)

在目标客户端上显示运行 shell-command(或省略时为 default-command)的弹出窗口。 弹出窗口是在任何面板上绘制的矩形框。当存在弹出窗口时,面板不会更新。如果命令在现有弹出窗口内运行,则会修改该弹出窗口。在这种情况下,仅接受 -b、-B、-C、-E、-EE、-K、-N、-s 和 -S 选项;其他所有选项都将被忽略。

-E 在 shell-command 退出时自动关闭弹出窗口。两个 -E 仅在 shell-command 成功退出时才关闭弹出窗口。-k 允许任何按键来关闭弹出窗口,而不是仅允许“Escape”或“C-c”。

-x 和 -y 给出了弹出窗口的位置,它们的含义与 display-menu 命令中的含义相同。-w 和 -h 给出了宽度和高度,它们都可以是百分比(后跟“%”)。如果省略,则使用终端大小的一半。

-B 不用边框包围弹出窗口。

-b 设置用于绘制弹出窗口边框的字符类型。当指定了 -B 时,-b 选项将被忽略。请参见 popup-border-lines,了解边框线的可能值。

-s 设置弹出窗口的样式,-S 设置弹出窗口边框的样式(参见“样式”)。

-e 的形式为“VARIABLE=value”,它会设置弹出窗口的环境变量;可以多次指定。

-T 是弹出窗口标题的格式(请参阅“FORMATS”)。

-C 标志会关闭客户端上的任何弹出窗口。

-N 会禁用任何先前指定的 -E、-EE 或 -k 选项。

show-prompt-history [-T prompt-type]
(别名:showphist)
显示指定提示类型的提示历史记录。如果省略 -T,则显示所有类型的历史记录。请参阅 command-prompt 以获取提示类型可能的取值。

缓冲区

tmux 维护一组命名的粘贴缓冲区。每个缓冲区可以是显式或自动命名的。显式命名的缓冲区是在创建时使用 set-buffer 或 load-buffer 命令,或通过使用 set-buffer -n 重命名自动命名的缓冲区来命名的。自动命名的缓冲区会被赋予诸如“buffer0001”、“buffer0002”之类的名称。当达到 buffer-limit 选项时,最旧的自动命名的缓冲区将被删除。显式命名的缓冲区不受 buffer-limit 影响,并且可以使用 delete-buffer 命令删除。

可以使用 copy-mode 或 set-buffer 和 load-buffer 命令将缓冲区添加到窗口中,并可以使用 paste-buffer 命令将其粘贴到窗口中。如果使用缓冲区命令且未指定缓冲区,则假定为最近添加的自动命名的缓冲区。

还会为每个窗口维护一个可配置的历史记录缓冲区。默认情况下,最多保存 2000 行;可以使用 set-option 命令(参见上文)中的 history-limit 选项进行更改。

缓冲区命令如下:

choose-buffer [-NryZ] [-F format] [-f filter] [-K key-format] [-O sort-order] [-t target-pane]
[template]
将一个窗格置于缓冲区模式,其中可以从列表中交互式地选择一个缓冲区。
每个缓冲区显示在一行中。左侧显示一个快捷键,允许立即选择,或者可以使用以下按键导航和选择或以其他方式操作列表。-Z 放大窗格。-y 禁用任何确认提示。可以使用以下按键:

按键  功能
Enter   粘贴选定的缓冲区
Up      选择上一个缓冲区
Down    选择下一个缓冲区
C-s 按名称或内容搜索
n       重复上一次搜索(向前)
N       重复上一次搜索(向后)
t       切换缓冲区的标记状态
T       取消标记所有缓冲区
C-t 标记所有缓冲区
p       粘贴选定的缓冲区
P       粘贴标记的缓冲区
d       删除选定的缓冲区
D       删除标记的缓冲区
e       在编辑器中打开缓冲区
f       输入一个格式以过滤项目
O       更改排序字段
r       反转排序顺序
v       切换预览
q       退出模式

选择缓冲区后,会将“%%”替换为缓冲区名称,并在模板中执行结果作为命令。如果未提供模板,则使用“paste-buffer -p -b '%%'”。

-O 指定初始排序字段:可以是“time”(创建)、“name”或“size”之一。-r 反转排序顺序。-f 指定初始过滤器:过滤器是一个格式 - 如果其结果为零,则列表中该项目将不显示,否则会显示。如果过滤器会导致一个空列表,则该过滤器将被忽略。-F 指定列表中每个项目的格式,-K 指定每个快捷键的格式;两者都会针对每一行进行评估。-N 从不带预览开始。只有在至少连接一个客户端时,此命令才有效。

clear-history [-H] [-t target-pane]
(alias: clearhist)

删除并释放指定窗格的历史记录。-H 还会删除所有超链接。

delete-buffer [-b buffer-name]
(alias: deleteb)

删除名为 buffer-name 的缓冲区,或者如果没有指定,则删除最近添加的自动命名的缓冲区。

list-buffers [-F format] [-f filter]
(alias: lsb)

列出全局缓冲区。-F 指定每行格式,-f 指定过滤器。仅显示过滤器为真的缓冲区。请参见“格式”部分。

load-buffer [-w] [-b buffer-name] [-t target-client] path
(alias: loadb)

从路径加载指定的粘贴缓冲区的内容。如果给出 -w,则缓冲区也会发送到目标客户端的剪贴板,使用 xterm(1) 转义序列(如果可能)。如果路径为“-”,则从标准输入读取内容。

paste-buffer [-dpr] [-b buffer-name] [-s separator] [-t target-pane]
(alias: pasteb)

将粘贴缓冲区的内容插入到指定的窗格中。如果没有指定,则粘贴到当前窗格。使用 -d,还会删除粘贴缓冲区。在输出时,粘贴缓冲区中的所有换行符 (LF) 字符都将替换为分隔符,默认情况下是回车符 (CR)。可以使用 -s 标志指定自定义分隔符。-r 标志表示不进行替换(等效于分隔符为 LF)。如果指定了 -p,则如果应用程序请求带括号的粘贴模式,则会在缓冲区周围插入括号控制代码。

save-buffer [-a] [-b buffer-name] path
(alias: saveb)

将指定的粘贴缓冲区的内容保存到路径。-a 选项会附加到文件,而不是覆盖文件。如果路径为“-”,则内容将写入标准输出。

set-buffer [-aw] [-b buffer-name] [-t target-client] [-n new-buffer-name] data
(alias: setb)

将指定的缓冲区的内容设置为数据。如果给出 -w,则缓冲区也会发送到目标客户端的剪贴板,使用 xterm(1) 转义序列(如果可能)。-a 选项会附加到缓冲区,而不是覆盖缓冲区。-n 选项会将缓冲区重命名为 new-buffer-name。

show-buffer [-b buffer-name]
(alias: showb)

显示指定的缓冲区的内容。

杂项

杂项命令如下:

clock-mode [-t target-pane]

显示一个大时钟。

if-shell [-bF] [-t target-pane] shell-command command [command]
(alias: if)

如果 shell-command(使用 /bin/sh 运行)返回成功,则执行第一个命令,否则执行第二个命令。在执行之前,shell-command 会使用“格式”部分中指定的规则进行扩展,包括与 target-pane 相关的规则。使用 -b,shell-command 在后台运行。

如果给定了 -F,则不会执行 shell 命令,但如果该命令不为空或不为零(在扩展格式后),则会将其视为成功。

lock-server

(别名:lock) 通过运行 lock-command 选项指定的命令,为每个客户端单独锁定。

run-shell [-bCE] [-c start-directory] [-d delay] [-t target-pane] [shell-command]

(别名:run) 使用 /bin/sh 或(使用 -C)在后台执行 shell 命令,而不会创建窗口。在执行之前,shell 命令会使用“格式”部分中指定的规则进行扩展。使用 -b,命令将在后台运行。-d 会在启动命令之前等待指定的秒数。-E 将命令的 stderr 重定向到 stdout,而不是忽略它。如果给定了 -c,则当前工作目录将被设置为 start-directory。如果未给定 -C,则任何输出到 stdout 的内容将在命令完成后显示在视图模式中(在 -t 指定的窗格中或当前窗格中)。如果命令失败,则也会显示退出状态。

wait-for [-L | -S | -U] channel

(别名:wait) 在不使用任何选项的情况下,它会阻止客户端退出,直到使用与相同通道的 wait-for -S 命令唤醒它。如果使用 -L,则该通道将被锁定,并且任何尝试锁定相同通道的客户端都会被强制等待,直到使用 wait-for -U 解锁该通道。

退出消息

当 tmux 客户端分离时,它会打印一条消息。这可能是以下消息之一:

detached (from session ...)

客户端已正常分离。

detached and SIGHUP

客户端已分离,并且其父进程发送了 SIGHUP 信号(例如使用 detach-client -P)。

lost tty

客户端的 tty(4) 或 pty(4) 意外地被销毁。

terminated

客户端使用 SIGTERM 信号被终止。

too far behind

客户端处于控制模式,并且无法跟上来自 tmux 的数据。

exited

当服务器没有会话时退出。

server exited

服务器在接收到 SIGTERM 信号时退出。

server exited unexpectedly

服务器崩溃或以其他方式退出,而没有向客户端说明原因。

TERMINFO 扩展

tmux 了解一些 terminfo(5) 的非官方扩展。通常无需手动设置这些扩展,而是应使用 terminal-features 选项。

AX  一个现有的扩展,它告诉 tmux 终端支持默认颜色。

Bidi  告诉 tmux 终端支持 VTE 双向文本扩展。

Cs, Cr  设置光标颜色。第一个选项接受一个字符串参数,用于设置颜色;第二个选项不接受任何参数,并恢复默认光标颜色。如果设置了这些选项,则可以使用如下序列从 tmux 内部更改光标颜色:

$ printf '\033]12;red\033\\'

该颜色是 X(7) 颜色,请参阅 XParseColor(3)。

Cmg, Clmg, Dsmg, Enmg

设置、清除、禁用或启用 DECSLRM 边距。如果终端报告其为 VT420 兼容,则这些会自动设置。

Dsbp, Enbp

禁用和启用带括号的粘贴。如果存在 XT 功能,则这些会自动设置。

Dseks, Eneks

禁用和启用扩展键。

Dsfcs, Enfcs

禁用和启用焦点报告。如果存在 XT 功能,则这些会自动设置。

Hls

设置或清除超链接注释。

Nobr

告诉 tmux 终端不使用亮色来显示粗体。

Rect

告诉 tmux 终端支持矩形操作。

Smol

启用上划线属性。

Smulx

设置样式的下划线。单个参数可以是:0 表示没有下划线,1 表示普通下划线,2 表示双下划线,3 表示卷曲下划线,4 表示点状下划线,5 表示虚线下划线。

Setulc, Setulc1, ol

设置下划线颜色或重置为默认值。Setulc 用于 RGB 颜色,Setulc1 用于 ANSI 或 256 颜色。Setulc 参数为 (red * 65536) + (green * 256) + blue,其中每个值都在 0 到 255 之间。

Ss, Se

设置或重置光标样式。如果设置,可以使用如下序列来将光标更改为下划线:

$ printf '\033[4 q'

如果未设置 Se,则使用 Ss 且参数为 0 来重置光标样式。

Swd

设置用于工作目录通知的起始序列。该序列使用标准的 fsl 功能终止。

Sxl

指示终端支持 SIXEL。

Sync

开始(参数为 1)或结束(参数为 2)同步更新。

Tc

指示终端支持“直接颜色”RGB 转义序列(例如,\e[38;2;255;255;255m)。

如果支持,则将其用于初始化颜色转义序列(可以通过将“initc”和“ccc”功能添加到 tmux terminfo(5) 条目中来启用)。

这等效于 RGB terminfo(5) 功能。

Ms

将当前缓冲区存储在主机终端的选择(剪贴板)中。请参见上面的 set-clipboard 选项和 xterm(1) 手册页。

XT

这是一个现有的扩展功能,tmux 使用它来表示终端支持 xterm(1) 标题设置序列,并自动设置上述一些功能。

控制模式

tmux 提供了一个文本界面,称为控制模式。这允许应用程序使用简单的纯文本协议与 tmux 进行通信。

在控制模式下,客户端将 tmux 命令或命令序列发送到标准输入,这些命令或命令序列以换行符结尾。每个命令将产生一个输出块到标准输出。输出块由一个 %begin 行、输出(可能为空)和 %end 或 %error 组成。%begin 和匹配的 %end 或 %error 具有三个参数:一个整数时间(自纪元以来的秒数)、命令编号和标志(当前未使用)。例如:


%begin 1363006971 2 1
0 ksh* (1 panes) [80x24] [layout b25f,80x24,0,0,2] @2 (active)
%end 1363006971 2 1

可以使用 refresh-client -C 命令来设置控制模式下客户端的大小。

在控制模式下,tmux 会输出通知。通知永远不会出现在输出块中。

以下是定义的通知:

%client-detached client

客户端已分离。

%client-session-changed client session-id name

客户端现在已连接到 ID 为 session-id,名称为 name 的会话。

%config-error error

配置文件中发生错误。

%continue pane-id

面板已在暂停后继续(如果设置了 pause-after 标志,请参阅 refresh-client -A)。

%exit [reason]

tmux 客户端正在退出,因为未连接到任何会话,或者发生了错误。如果存在,reason 描述了客户端退出的原因。

%extended-output pane-id age ... : value

当设置 pause-after 标志时,%output 的新形式。age 是 tmux 缓冲输出之前的时间,单位为毫秒。任何后续的参数,直到单个“:”为止,都用于将来使用,应忽略。

%layout-change window-id window-layout window-visible-layout window-flags

ID 为 window-id 的窗口的布局已更改。新布局为 window-layout。窗口的可见布局为 window-visible-layout,窗口标志为 window-flags。

%message message

使用 display-message 命令发送的消息。

%output pane-id value

窗口面板生成输出。value 会转义不可打印的字符和反斜杠,转义为八进制 \xxx。

%pane-mode-changed pane-id

ID 为 pane-id 的面板已更改模式。

%paste-buffer-changed name

粘贴缓冲区名称已更改。

%paste-buffer-deleted name

粘贴缓冲区名称已删除。

%pause pane-id

面板已暂停(如果设置了 pause-after 标志)。

%session-changed session-id name

客户端现在已连接到 ID 为 session-id,名称为 name 的会话。

%session-renamed name

当前会话已重命名为 name。

%session-window-changed session-id window-id

ID 为 session-id 的会话将其活动窗口更改为 ID 为 window-id 的窗口。

%sessions-changed

创建或销毁了一个会话。

%subscription-changed name session-id window-id window-index pane-id ... : value

与订阅名称关联的格式的值已更改为 value。请参阅 refresh-client -B。任何在 pane-id 之后的参数,直到单个“:”为止,都用于将来使用,应忽略。

%unlinked-window-add window-id

ID 为 window-id 的窗口已创建,但未链接到当前会话。

%unlinked-window-close window-id

ID 为 window-id 的窗口,该窗口未链接到当前会话,已关闭。


%unlinked-window-renamed window-id

ID 为 window-id 的窗口(未链接到当前会话)已重命名。

%window-add window-id

ID 为 window-id 的窗口已链接到当前会话。

%window-close window-id

ID 为 window-id 的窗口已关闭。

%window-pane-changed window-id pane-id

ID 为 window-id 的窗口中的活动窗格已更改为 ID 为 pane-id 的窗格。

%window-renamed window-id name

ID 为 window-id 的窗口已重命名为 name。

环境

当 tmux 启动时,它会检查以下环境变量:

EDITOR    如果此变量中指定的命令包含字符串“vi”且未设置 VISUAL,
则使用 vi 样式的按键绑定。由 mode-keys 和 status-keys 选项覆盖。

HOME 用户的登录目录。如果未设置,则会查阅 passwd(5) 数据库。

LC_CTYPE  字符编码区域设置(1)。它用于两个不同的目的。对于输出到终端,如果提供了 -u 选项或 LC_CTYPE 包含“UTF-8”或“UTF8”,则使用 UTF-8。否则,仅写入 ASCII 字符,并将非 ASCII 字符替换为下划线(“_”)。对于输入,tmux 始终以 UTF-8 区域设置运行。如果操作系统提供了 en_US.UTF-8,则使用它,并忽略 LC_CTYPE 以进行输入。否则,LC_CTYPE 告诉 tmux 当前系统上 UTF-8 区域设置的名称。如果 LC_CTYPE 指定的区域设置不可用或不是 UTF-8 区域设置,则 tmux 将显示错误消息并退出。

LC_TIME   日期和时间格式区域设置(1)。它用于依赖于区域设置的 strftime(3) 格式说明符。

PWD       要设置为全局环境变量的当前工作目录。如果它包含符号链接,这可能会很有用。如果变量的值与当前工作目录不匹配,则该变量将被忽略,并且将使用 getcwd(3) 的结果。

SHELL     新窗口的默认 shell 的绝对路径。有关详细信息,请参阅 default-shell 选项。

TMUX_TMPDIR

包含服务器套接字的目录的父目录。有关详细信息,请参阅 -L 选项。

VISUAL    如果此变量中指定的命令包含字符串“vi”,则使用 vi 样式的按键绑定。由 mode-keys 和 status-keys 选项覆盖。

文件

~/.tmux.conf
$XDG_CONFIG_HOME/tmux/tmux.conf
~/.config/tmux/tmux.conf

默认 tmux 配置文件。 /etc/tmux.conf 系统范围的配置文件。

示例

要创建一个运行 vi(1) 的新 tmux 会话:

$ tmux new-session vi

大多数命令都有一个较短的形式,称为别名。对于 new-session,这是 new:

$ tmux new vi

或者,可以使用命令的最短的明确形式。如果有几个选项,则列出它们:

$ tmux n
命令不明确:n,可能是:new-session、new-window、next-window

在活动的会话中,可以通过键入“C-b c”(Ctrl 后跟“b”键,然后是“c”键)来创建新的窗口。

可以使用以下方式在 Windows 中进行导航:‘C-b 0’(选择窗口 0),‘C-b 1’(选择窗口 1),依此类推;‘C-b n’ 选择下一个窗口;‘C-b p’ 选择上一个窗口。

可以使用 ‘C-b d’(或通过外部事件,如 ssh(1) 断开连接)分离会话,并使用以下命令重新连接:

$ tmux attach-session

键入 ‘C-b ?’ 将列出当前窗口中的当前按键绑定;可以使用向上和向下箭头键导航列表,或使用 ‘q’ 退出。

可以在 ~/.tmux.conf 配置文件中放置在 tmux 服务器启动时要运行的命令。常见示例包括:

更改默认前缀键:

set-option -g prefix C-a
unbind-key C-b
bind-key C-a send-prefix

关闭状态栏或更改其颜色:

set-option -g status off
set-option -g status-style bg=blue

设置其他选项,例如默认命令或在 30 分钟不活动后锁定:

set-option -g default-command "exec /bin/ksh"
set-option -g lock-after-time 1800

创建新的按键绑定:

bind-key b set-option status
bind-key / command-prompt "split-window 'exec man %'"
bind-key S command-prompt "new-window -n %1 'ssh %1'"

参见

pty(4)

作者

Nicholas Marriott <_>