我的~/.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 Teminator 相同)
情况:将窗口水平拆分为 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 个。但每个人都有自己的选择。