如何在tmux中关闭前缀键和命令键之间的超时?

qua*_*nta 59 timeout 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
Run Code Online (Sandbox Code Playgroud)

(使命令键与 GNOME 终结者相同)

情况:将窗口水平拆分为2个窗格后,切换到带有Ctrl+a Up箭头的窗格后,我必须等待一段时间(2-3秒)才能在此窗格中查看shell历史命令。因为如果我Up再次按,它将切换回另一个窗格,而不是向我显示 shell 历史命令。我怎么能拒绝这个?

Chr*_*sen 62

Up、Down、Left 和 Right(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
Run Code Online (Sandbox Code Playgroud)

如果要禁用当前会话的重复,请键入前缀、冒号,然后输入以下命令:

set-option repeat-time 0
Run Code Online (Sandbox Code Playgroud)

或者,您也许能够找到一个舒适的非零值。如果您确实有大约 2000(即 2 秒)的值,那么我猜它是在/etc/tmux.conf.

如果要禁用所有会话的重复(或更改超时),请使用以下命令设置全局值:

set-option -g repeat-time 0
Run Code Online (Sandbox Code Playgroud)

如果您设置了每个会话的值,则需要在全局值在该会话中生效之前取消设置 ( set-option -u repeat-time)。.tmux.conf如果您希望“永久”关闭它,您可能希望通过您的设置全局值。

如果你只有 Up 有问题,你可以重新绑定它而不需要-r

bind-key Up select-pane -U
Run Code Online (Sandbox Code Playgroud)


iva*_*van 6

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

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
Run Code Online (Sandbox Code Playgroud)

你可以在没有-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
Run Code Online (Sandbox Code Playgroud)

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