配置 tmux

說明

當啟動 tmux 伺服器,tmux 在使用者的家目錄中運行一個名為 .tmux.conf 的文件。 該文件包含按順序執行的 tmux 命令列表 請務必注意 .tmux.conf 僅在啟動伺服器時運行 而不在創建新會話時運行

可以使用 source-file 命令從 .tmux.conf 或正在運行的 tmux 伺服器 運行不同的配置文件,例如使用命令提示符從正在運行的 伺服器再次運行 .tmux.conf

:source ~/.tmux.conf

配置文件中的命令每行顯示一個 以#開頭的任何行都是註釋,將被忽略

# 這是一個註解 - 下面的命令為關閉狀態欄
set -g status off

使用滑鼠

:set -g mouse on 打開滑鼠命令提示 它可用於更改活動中窗格或窗口,調整窗格大小 複製內容或從菜單中選擇項目

滑鼠操作說明

  • 在窗格按左鍵切換活動中的窗格

  • 在狀態欄的窗口名稱按左鍵切換窗口

  • 按左鍵拖曳窗格邊距調整大小

  • 在窗格內拖曳左鍵選取文字 放開滑鼠時複製選取的文字

  • 在窗格按右鍵打開一個包含各種指令的選單 當釋放滑鼠後,選取的命令會在目標光格中運行 每一個選單項目也有一個快捷鍵顯示在括號中

  • 在狀態欄的窗口或會話的名稱按右鍵打開一個 類似的選單給窗口或會話使用

快捷鍵綁定

使用 bind-keyunbind-key 命令可以更改 tmux 快捷鍵綁定 tmux 中的每個快捷鍵綁定都屬於一個命名的快捷鍵表 有四個預設的快捷表:

  • root(根) 表包含不帶前綴鍵的快捷鍵綁定

  • prefix(前綴) 表包含在前綴鍵按下之後的快捷鍵綁定 就像進入到 tmux 的快捷鍵提到的那樣

  • copy-mode(複製模式) 表包含使用 emacs(1)-style 的按鍵 在復制模式下使用快捷鍵綁定。

  • copy-mode-vi 表包含使用 vi(1)-style 的按鍵 在復制模式下使用快捷鍵綁定。

可以使用 list-keys 命令列出所有的快捷鍵綁定或 單個表的快捷鍵綁定。預設情況下,這會將按快捷鍵顯示為 一系列的 bind-key 命令。 -T 標誌 要顯示的快捷鍵表 -N 標誌 顯示快捷鍵幫助,像是 C-b? 快捷鍵綁定

作者在輸入 -N 時,已經變成非法的選項了

例如,僅列出 prefix 表中的快捷鍵

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

或者

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

綁定 C-b M-0 快捷鍵為選擇窗口 10

bind M-0 selectw -t:=10

取消綁定快捷鍵 C-b M-0

unbind M-0

更進一步綁定的部分在手冊頁的命令部分

複製模式快捷鍵

複製模式快捷鍵綁定在 copy-mode 和 copy-mode-vi 按鍵表中設定 複製模式具有一組單獨的命令,這些命令使用 -X 標誌 傳遞給 send-keys 命令,例如,複製模式 start-of-line 命令 將游標移動到行的開頭,並綁定 C-a 到 copy-mode 按鍵表:

$ tmux lsk -Tcopy-mode C-a
bind-key -T copy-mode C-a send-keys -X start-of-line

手冊頁中提供了複製模式命令的完整列表,這裡是選取:

命令

emacs(1)

vi(1)

描述

begin-selection

C-Space

Space

開始選取

cancel

q

q

離開複製模式

clear-selection

C-g

Escape

清除選取

copy-pipe

複製並管道到第一個參數中的命令

copy-selection-and-cancel

M-w

Enter

複製選取並離開複製模式

cursor-down

Down

j

向下移動游標

cursor-left

Left

h

向左移動游標

cursor-right

Right

l

向右移動游標

cursor-up

Up

k

向上移動游標

end-of-line

C-e

$

移動游標到行尾

history-bottom

M->

G

移至歷史底部

history-top

M-<

g

移至歷史頂部

middle-line

M-r

M

移至中間行

next-word-end

M-f

e

移至下一個單字的節尾

page-down

PageDown

C-f

向下翻頁

page-up

PageUp

C-b

向上翻頁

previous-word

M-b

b

移至上一個單字

rectangle-toggle

R

v

切換矩形選取

search-again

n

n

重複上一次搜尋

search-backward

?

向後搜尋,第一個參數是搜尋項目

search-backward-incremental

C-r

向後漸進搜尋,通常與 -i 標誌一起使用命令提示

search-forward

/

向前搜尋,第一個參數是搜尋項目

search-forward-incremental

C-s

向前漸進搜尋

search-reverse

N

N

重複上一次搜尋,但方向相反

start-of-line

C-a

0

移至行首

選項類型

顯示選項

$ tmux show -s -s 顯示伺服器選項

$ tmux show -g -g 沒有其他的旗標為顯式全域會話選項

$ tmux show -wg -w 和 -g 一起為顯示全域窗口選項

$ tmux show -g status 指定顯示 status 選項

改變選項

set -g status off 設定狀態欄選項關閉

set -s default-terminal 'tmux-256color' 設定預設終端選項

set -gu status -u 變成未設置選項,未設置選項會恢復成預設值

顏色和風格

set -g status-style 'bg=blue' 設定狀態欄背景的顏色為藍色

剩下的風格項目寫在手冊裡

有用選項列表

除了樣式選項,這是最常用的 tmux 選項的簡短列表:

選項

類型

描述

base-index

會話

如果設定,則窗口索引從 base-index 開始而不是從0

buffer-limit

伺服器

保留的最大自動緩衝區數,預設值為50

default-terminal

伺服器

tmux 中 TERM 環境變數的預設值

display-panes-time

窗口

C-b q 以毫秒為單位的時間顯示的窗格號

display-time

會話

狀態欄上顯示訊息的時間(以毫秒為單位)

escape-time

伺服器

tmux 收到 Escape 鍵後等待的時間 以查看它是否是較長鍵序列的一部分

focus-events

伺服器

tmux 是否發送焦點鍵序列,當活動窗格更改時 以及是否從外部終端接收(如果支持)

history-limit

會話

每個窗格的歷史記錄中保留的最大行數

mode-keys

窗口

在復制模式下使用 emacs(1)還是 vi(1) 鍵綁定

mouse

會話

如果啟用了游標

pane-border-status

窗口

狀態欄是否出現在每個窗格邊框中:頂部或底部

prefix

會話

前綴鍵,預設為 C-b

remain-on-exit

窗口

程序在運行離開時是否自動殺死窗格

renumber-windows

會話

如果 on(開),則窗口將自動重新編號 以填補窗口列表中的所有間隙

set-clipboard

會話

當複製文本和外部終端支持時

tmux 是否應嘗試設定外部 X(7) 剪貼板

set-titles

會話

如果 on,tmux 將設定外部終端的標題

status

會話

狀態行是否可見

status-keys

會話

在命令提示字元下是否使用 emacs(1) 或 vi(1) 鍵綁定

status-interval

會話

重畫狀態行之前的最長時間(以秒為單位)

status-position

會話

狀態行的位置:頂部或底部

synchronize-panes

窗口

如果 on,則將在窗口中的任何窗格中鍵入的內容 發送到窗口中的所有窗格 - 請謹慎使用此選項!

terminal-overrides

會話

tmux 的任何功能都應從為外部終端指定的 TERM 中覆蓋

樣式和格式選項列表

這是最常用的 tmux 樣式和格式選項列表:

選項

類型

描述

display-panes-active-colour

會話

C-b q 活動窗格編號的樣式

display-panes-colour

會話

C-b q 除了活動窗格的 窗格編號的樣式

message-style

會話

狀態行和命令提示字元上顯示的訊息樣式

mode-style

窗口

在複製模式選取的樣式

pane-active-border-style

窗口

活動窗格邊框的樣式

pane-border-format

窗口

如果設定了 panel-border-status 則文本格式顯示在窗格邊框狀態行中的

pane-border-style

窗口

除了活動窗格的窗格邊框的樣式

status-left-length

會話

狀態行左側的最大長度

status-left-style

會話

狀態行左側的樣式

status-left

會話

狀態行左側的文本格式

status-right-length

會話

狀態行右側的最大長度

status-right-style

會話

狀態行右側的樣式

status-right

會話

狀態行右側的文本格式

status-style

會話

狀態行整體的樣式,部分可能會被更具體的選項覆蓋,像是 status-left-style

window-active-style

窗口

窗口活動窗格中預設顏色的樣式

window-status-current-format

窗口

窗口列表中當前窗口的格式

window-status-current-style

窗口

窗口列表中當前窗口的樣式

window-status-format

窗口

除當前窗口外,窗口列表中窗口的格式

window-status-separator

窗口

窗口列表中窗口之間的分隔字元

window-status-style

窗口

除當前窗口外,窗口列表中窗口的樣式

window-style

窗口

除了活動窗格以外,窗口中窗格的預設顏色樣式

常見配置更改

.tmux.conf 常見的配置更改

更改前綴鍵

將 C-b 前綴鍵改成 C-a

set -g prefix C-a
unbind C-b
bind C-a send-prefix

自定義狀態行

set -g status off 關閉狀態行

set -g status-position top 將狀態行移到頂部

set -g status-style bg=red 將背景色設定為紅色

set -g status-right '%H:%M' 將右側的文本更改為僅有時間

set -g window-status-current-style 'underscore' 在當前窗口下劃線

配置窗格邊框

可以設定窗格的邊框顏色

set -g pane-border-style fg=red
set -g pane-active-border-style 'fg=red,bg=yellow'

可以為每個窗格分配一個帶有 panel-border-status 選項的狀態行,例如以粗體顯示窗格標題

set -g pane-border-status top
set -g pane-border-format '#[bold]#{pane_title}#[default]'

vi(1)鍵綁定

  1. mode-keys 複製模式使用 vi 鍵

  2. status-keys 命令提示使用 vi 鍵

set -g mode-keys vi
set -g status-keys vi

滑鼠複製行為

unbind -Tcopy-mode MouseDragEnd1Pane 釋放滑鼠時,不複製或清除選擇內容或退出複制模式。 必須使用鍵盤來複製選取

bind -Tcopy-mode MouseDragEnd1Pane send -X copy-selection 複製並清除選取,但不退出複制模式

bind -Tcopy-mode MouseDragEnd1Pane send -X copy-selection-no-clear 複製但不清除選取

Last updated