我的~/.tmux.conf
:
set -g prefix C-a
unbind C-b
bind C-a send-prefix
bind-key o split-window -v
bind-key e split-window -h
bind-key w kill-pane
(使指令鍵與 GNOME 終結者相同)
狀況:將視窗水平分割成2個窗格後,切換到有Ctrl+a Up箭頭的窗格後,我必須等待一段時間(2-3秒)才能查看該窗格中的shell歷史命令。因為如果我Up再次按下它,它將切換回另一個窗格,而不是向我顯示 shell 歷史命令。我怎麼才能拒絕這個呢?
答案1
預設情況下,向上、向下、向左和向右(select-pane
綁定;以及相同鍵的 Control- 和 Meta- resize-pane
)是「可重複」綁定(透過 進行bind-key -r
)。鍵入前綴鍵和任何單一可重複鍵後,您可以在透過repeat-time
會話選項指定的毫秒數(預設值為 500 毫秒)內鍵入任何其他可重複鍵(無需再次鍵入前綴) 。
repeat-time
您可以使用以下 shell 指令檢查 的目前值:
tmux show-options -g | grep \^repeat-time # global
tmux show-options | grep \^repeat-time # this session
如果要停用目前會話的重複,請鍵入前綴、冒號,然後輸入以下命令:
set-option repeat-time 0
或者,您也許能夠找到一個舒適的非零值。如果你確實有一個大約 2000(即 2s)的值,那麼我猜測它是在/etc/tmux.conf
.
如果您想要停用所有會話的重複(或變更逾時),請使用下列命令設定全域值:
set-option -g repeat-time 0
如果您設定了每個會話值,則需要先取消設置,然後全域值才會在該會話中生效 ( set-option -u repeat-time
)。.tmux.conf
如果您希望「永久」保留全域值,您可能希望透過您的設定全域值。
如果您只遇到 Up 問題,您可以重新綁定它,而無需-r
:
bind-key Up select-pane -U
答案2
如果需要,您也可以關閉特定鍵綁定的重複。例如,在窗格之間切換的預設綁定可歸結為:
bind-key -r Up select-pane -U
bind-key -r Down select-pane -D
bind-key -r Left select-pane -L
bind-key -r Right select-pane -R
您可以在沒有-r
標誌的情況下重新建立這些,例如
bind-key Up select-pane -U
bind-key Down select-pane -D
bind-key Left select-pane -L
bind-key Right select-pane -R
就我個人而言,我更喜歡窗格切換是不可重複的。如果您將一個視窗分成許多小窗格,那麼重複是很好的,但它可能會導致與這些窗格中執行的應用程式(如shell 歷史記錄、vim 等)發生關鍵衝突(如您所描述的),而且我無論如何,每個視窗通常不超過 2 個窗格。但每一個他自己。