tmux-配置

参考 github wiki 的内容

配置文件

当 tmux server 启动时, 其会运行 ~/.tmux.conf 文件中的内容.

若想在 tmux server 运行时加载一个文件中的 tmux commands, 可用 source-file (简写为 source) 命令, 如:

1
:source ~/tmux_command.conf

这些文件中, 每一个命令占据一行, 用 # 做为注释, 如:

1
2
# This is a comment - the command below turns the status line off
set -g status off

注意在用 "' 包裹字符串时需要注意, ' 中的 \ 会被当作普通字符, 即不被视为转义. 在 " 中环境变量和 ~ 都会正常展开, 如:

1
source "~/$MYFILE"

是有效的.

Key bindings

主要用 bind-keyunbind-key 两个命令来设置. 每一个 tmux key binding 都属于一个 named key table. 默认有四个 key tables:

  • root table 包含不需要先按下 prefix key 的 key bindings
  • prefix table 包含需要先按下 prefix key 的 key bindings
  • copy-mode table 包含在 copy mode 下的 emacs-style keys
  • copy-mode-vi table 包含在 copy mode 下的 vi-style keys

可以用 list-keys 命令列出某一 table 下的所有 key bindings, 用 -T flag 指定 table name, -N flag 决定是否以 key help 的形式显示.

如列出所有 prefix table 下的 key bindings, 这里是以 bind-key 设置的形式列出:

1
2
3
4
$ tmux lsk -Tprefix
bind-key -T prefix C-b send-prefix
bind-key -T prefix C-o rotate-window
...

这里也可以查看单个 key binding, 如查看绑定在 C-b 上的操作:

1
2
$ tmux list-keys -Tprefix C-b
bind-key -T prefix C-b send-prefix

以 key help 形式显示:

1
2
3
4
$ tmux lsk -Tprefix -N
C-b Send the prefix key
C-o Rotate through the panes
...

用 bind-key 设置 key bindings

在用 bind-key 设置时, 可以用 -T 指定设置在哪一个 table 下, 如果忽略 -T flag 则默认放在 prefix table 中. -n-Troot 的简写形式.

如, 设置 prefix 键:

1
bind-key    -T prefix C-b     send-prefix

用 unbind-key 来解除一个 key binding

-T-n flags 与 bind-key 相同, 如移除绑定在 M-0 上的操作:

1
unbind M-0

选项的类型

tmux 的配置中的 options 可分为:

  • Server options, 作用于整个 server
  • Session options, 作用于一个或全部 sessions
  • Window options, 作用于一个或全部 windows
  • Pane options, 作用于一个或全部 panes
  • User options, 用户自定义的选项

对于 session 和 window 的 options 而言都有 global 和 local 之分. 当一个选项没有在 current session/window 中设置时, 则应用 global option. Pane options 和上述类似, 但其还会参考 window options.

查看 options

可以用 show-options 命令查看, 加上 -g 则会查看 global options. 用 -s flag 查看 server options:

1
2
3
4
$ tmux show -s
backspace C-?
buffer-limit 50
...

只用 -g 选项时显示 global session options:

1
2
3
4
$ tmux show -g
activity-action other
assume-paste-time 1
...

-w 查看 window options, -wg 查看 global window options:

1
2
3
4
$ tmux show -wg
aggressive-resize off
allow-rename off
...

可以通过给出 option name 来单独查看一个 option 的设置:

1
2
$ tmux show -g status
status on

更改 options

一个 option 可以用 set-option (简写为 set) 命令来设置 (也可以用于 unset), 其不需要 -s, -w 等 flag 来区分一个 option 是属于 session 还是 window 之类的, tmux 会自己识别出. 只需要 -g 来表明是否为 global.

如关闭 status 选项:

1
set -g status off

若想取消一个 option 的设置 (即恢复默认设置), 则加上 -u flag, 如:

1
set -gu status

option 的部分设置 Formats

这种 Formats 一般用于控制 text 的显示, 可以显示 tmux server, a session, window or pane 的 attributes.

具体语法为, 用 #{} 包裹 (注意得用引号包裹), 如 status-right 的默认设置为:

1
2
$ tmux show -s status-right
status-right "#{?window_bigger,[#{window_offset_x}#,#{window_offset_y}] ,}\"#{=21:pane_title}\" %H:%M %d-%b-%y"

具体语法位于 github 中 formats 相关 wiki.

嵌入 shell 命令

可以用 #() 包裹来显示 shell 命令的输出, 如:

1
set -g status-left '#(uptime)'

设置 colours and styles

有两个地方可以设置 style:

  • status-style 这个 option
  • #[] 包裹的 option value (embedded style 语法)

一个 style 由多个用空格或 , 分隔的 terms 组成, 常用的有:

  • default, 使用默认颜色
  • bg, 设置 background colour, 如 bg=red
  • fg, 设置 foreground colour, 如 fg=green
  • bright or bold, underscore, reverse, italics, 这些都 appear alone 如 bright,reverse (也就是不设置值)

其他的 term 可以在 manual page 中查询.

一个示例如:

1
set -g status-style 'bg=blue'

Embedded style

即用 #[] 包裹的部分, 如:

1
2
set -g status-left 'default #[fg=red] red #[fg=blue] blue'
set -g status-left-length 100

常用设置更改

更改 prefix key

Prefix key 通过 prefix option 来设置, 之后绑定到 send-prefix command 上, 若想改变 prefix key 为 C-a, 如:

1
2
3
set -g prefix C-a
unbind C-b
bind C-a send-prefix

tmux-配置
http://example.com/2024/04/02/tmux-配置/
作者
Jie
发布于
2024年4月2日
许可协议