我一直在使用 (前缀)o
来缩放当前 tmux 窗格,并Space
缩放相邻窗格:
bind o resize-pane -Z
bind Space if-shell -F '#{window_zoomed_flag}' 'last-pane' 'select-pane -t :.+; resize-pane -Z'
我想将它们更改为使用Space
andShift-Space
代替。
bind Space resize-pane -Z
bind S-Space if-shell -F '#{window_zoomed_flag}' 'last-pane' 'select-pane -t :.+; resize-pane -Z'
我重新启动了 tmux 服务器并运行了tmux list-keys
.列出了新的绑定,第一个绑定按预期工作,但我在传递S-Space
到 tmux 进行第二个绑定时遇到问题。
使用 iTerm(我在 OSX 上)及其默认设置,⇧ShiftSpace会忽略⇧Shift修饰符,因此当我输入 时<prefix> S-Space
,tmux 仅接收<prefix> Space
.
实际上,我将 iTerm 配置为发送转义序列^[[32;2u
,这样⇧ShiftSpace我就可以将它用于 Vim 键映射。启用此设置后,在命令行中输入<prefix> S-Space
tmux 插入内容。32;2u
我尝试使用cat -v
内部 tmux 进行调试:
^[[32;2u # S-Space
32;2u # <prefix> S-Space
是否有 tmux 会识别为的不同转义序列S-Space
,或者其他方式使其工作?
我读了一些有关 tmuxterminal-overrides
设置的内容,但这听起来好像它仅适用于控制序列。C-a
如果相关的话,我将其用作前缀键。
答案1
短:无
long:除非您更改了键盘映射,否则shift+space将仅发送space.
除了一些其他特殊键 ( Enter) 之外,您可能希望shift修改键盘发送的字符。这不是总是案子。你所熟悉的大多数都是基于xterm
,例如,使用shift、control和alt(或meta)生成不同的转义序列。
tmux
“知道”这些xterm
键(并且具有可以设置为允许其使用这些键的模式)。否则(如果未设置),如果该键与已知特殊键(功能键、光标键和编辑键,例如和)xterm-keys
之一的终端描述匹配,则接受该键(并将其映射到或任何“内部“使用终端描述)。HomeEndtmux
screen
如果密钥不属于这些类别之一,则tmux
忽略它(丢弃它)。
所以...如果你想使用shiftspace,你将必须让它发送tmux
期望的转义序列之一,并根据相应的预定义功能进行绑定。
进一步阅读: