使用现有密钥

使用现有密钥

我当前的窗格调整大小映射是

bind Left resize-pane -L 5
bind Down resize-pane -D 5
bind Up resize-pane -U 5
bind Right resize-pane -R 6

我每次都必须输入键绑定笔画和箭头键来调整窗格的大小。那太愚蠢了。如何进入某种调整大小窗格模式,仅点击按键箭头直到尺寸满意,然后退出调整大小窗格模式。

“进入平移并且只能通过箭头键模式更改大小”和“退出此模式”的命令/键映射是什么

谢谢

答案1

使用现有密钥

您可能根本不需要在配置中添加任何内容。以下是调整窗格大小的默认绑定(来自:list-keys):

bind-key -r -T prefix M-Up             resize-pane -U 5
bind-key -r -T prefix M-Down           resize-pane -D 5
bind-key -r -T prefix M-Left           resize-pane -L 5
bind-key -r -T prefix M-Right          resize-pane -R 5
bind-key -r -T prefix C-Up             resize-pane -U
bind-key -r -T prefix C-Down           resize-pane -D
bind-key -r -T prefix C-Left           resize-pane -L
bind-key -r -T prefix C-Right          resize-pane -R

-r选项bind-key意味着它们支持重复 - 您可以继续按 C 箭头或 M 箭头,直到完成调整大小,而无需再次输入前缀序列。此重复模式超时之前的时间量由repeat_time选项控制(默认 500ms)。

无前缀绑定

如果您想完全避免使用前缀键,则可以使用不同的bind表。来自绑定键手册页的部分:

默认情况下(没有-T),密钥绑定在字首关键表。该表用于在前缀键之后按下的键(例如,默认情况下“c”绑定到新窗户在里面字首表,因此“Cb c”创建一个新窗口)。这表用于没有前缀 key 的按键:将 'c' 绑定到新窗户在里面table(不推荐)意味着普通的“c”将创建一个新窗口。 -n是一个别名-T

直接绑定到根表:

bind-key -n C-Up resize-pane -U 5
bind-key -n C-Down resize-pane -D 5
bind-key -n C-Left resize-pane -L 5
bind-key -n C-Right resize-pane -R 5

复印模式装订

您建议使用专用模式来调整大小。 tmux不支持此类自定义模式,但它已经支持复制模式(默认情况下,使用 prefix- 输入[并使用 左键q),其中按键可以具有不同的绑定,通常没有前缀。不幸的是,不支持在此模式下绑定多字命令(包括带参数的命令)(请参阅tmux 问题 215)。然而,在做任何事情之前有一个测试的解决方法#{pane_in_mode}。根据对该问题的评论以及上面的“无前缀绑定”解决方案:

bind-key -n C-Up if-shell -F "#{pane_in_mode}" "resize-pane -U 5" "send-keys C-Up"
bind-key -n C-Down if-shell -F "#{pane_in_mode}" "resize-pane -D 5" "send-keys C-Down"
bind-key -n C-Left if-shell -F "#{pane_in_mode}" "resize-pane -L 5" "send-keys C-Left"
bind-key -n C-Right if-shell -F "#{pane_in_mode}" "resize-pane -R 5" "send-keys C-Right"

答案2

扩展@JigglyNaga的答案,您可以定义一个自定义密钥表并根据需要切换到它并从它返回。在密钥表中,您可以使用任何没有前缀的密钥。这是我使用的示例配置:

bind -T root F4 \
  set prefix None \;\
  set key-table resize \;\
  set status-left '#[bg=#C678DD,fg=#2C323C](resize-#S)' \;\
  set window-status-current-style bg=magenta,fg=black \;\
  set status-style bg=#E06C75 \;\
  refresh-client -S\;\

bind -T resize F4 \
  set -u prefix \;\
  set -u key-table \;\
  set -u status-left \;\
  set -u status-style \;\
  set -u window-status-current-style \;\
  refresh-client -S;

bind-key -r -T resize j resize-pane -D 5
bind-key -r -T resize k resize-pane -U 5
bind-key -r -T resize h resize-pane -L 5
bind-key -r -T resize l resize-pane -R 5


bind-key -r -T resize J select-pane -D
bind-key -r -T resize K select-pane -U
bind-key -r -T resize H select-pane -L
bind-key -r -T resize L select-pane -R

这允许我按 F4(不带任何前缀)切换到“调整大小”关键表。我还调整状态中的颜色和名称,以便我可以轻松地看到何时处于此模式。在“调整大小”表中,我可以仅使用它hjkl来调整大小并Shift+HJKL在窗格之间移动。一旦我对调整后的窗口大小感到满意,我可以再次按 F4 返回常规 tmux 模式。

相关内容