如何减少 tmux 中前缀键和命令键之间的超时时间?

如何减少 tmux 中前缀键和命令键之间的超时时间?

我的~/.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 个。但每个人都有自己的选择。

相关内容