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


45

我的~/.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历史命令。我该如何拒绝呢?


一个可能有用的替代方法是使用CTRL + B q,它以tmux显示窗口号。按CTRL + B q <数字>将带您到该窗口,向上/向下将立即可用。您必须很快输入q后面的数字。也有一个超时控制它。
Spacen Jasset

Answers:


53

向上,向下,向左和向右(select-pane绑定;以及的相同键的Control-和Meta- resize-pane)默认为“可重复”绑定(通过进行bind-key -r)。键入前缀密钥和任何单个可重复密钥后,您可以在通过repeat-time会话选项指定的毫秒数内(无需输入前缀)键入其他任何可重复密钥(不必再次键入前缀)(默认为500ms)。

您可以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

4

如果需要,您还可以关闭对特定键绑定的重复。例如,用于在窗格之间切换的默认绑定可归结为:

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

就个人而言,我更喜欢窗格切换是不可重复的。如果您将一个窗口划分为许多小窗格,则Repeat很好,但是它可能导致与这些窗格中运行的应用程序(如shell历史记录,vim等)发生键冲突(如您所述)。通常每个窗口最多只能有2个窗格。但每一个他自己。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.