在tmux中绑定Ctrl + Tab和Ctrl + Shift + Tab

我试图得到一个CTRL + 选项卡Ctrl + Shift + Tab键绑定工作在一个tmux会议(我也使用腻子)。

我已经经历了重新编译腻子的痛苦,所以它会发送CTRL和正确的转移 。 使用ctrl + v之后 ,我可以看到^[[27;5;9~^[[27;6;9~分别被发送给ctrl + tabctrl + shift + tab 。 有没有什么办法可以让这些绑定到下一个窗口和前一个窗口里面的tmux?

编辑:经过一番研究,我想我可能必须configurationxterm来包含这些键码。 任何想法我会怎么做呢?

编辑2:所以我发现我可以检索infocmp并重新编译它。 我补充说

kctab=\E[27;5;9~, kcstab=\E[27;6;9~,

到最后,除了现在给我一个错误。 “ 条目不以第一列中的terminal名称开始

一旦你的terminal发送了它们(不需要改变你的terminfo条目),最近的“未发布”版本的tmux会自动识别这些xterm样式的按键序列。 下一个版本(1.8?)也应该有这个支持。 通过适当构buildtmux 1 ,您所要做的就是绑定您的tmuxconfiguration中的密钥:

 bind-key C-Tab next-window bind-key CS-Tab previous-window 

您仍然需要在这些键之前键入您的前缀键。

(注意: ~/.tmux.conf只在服务器启动的时候被处理,如果你修改了,你需要退出所有会话并重新启动服务器,或者使用(例如) tmux source ~/.tmux.conf让你现有的服务器重新处理文件。)

另外,如果你想让tmux将这些(和其他)xterm风格的按键序列传递给在tmux中运行的程序,那么你将需要启用xterm-keys窗口选项。

 set-option -gw xterm-keys on 

(如果你愿意的话,你可以通过使用-w而不是-gw来实现-gw


如果您希望能够使用这些键而不键入前缀,则可以使用“无前缀”绑定:

 bind-key -n C-Tab next-window bind-key -n CS-Tab previous-window 

尽pipe如此,这将或多或less地将键盘“奉献”到键盘上。 将这些密钥input到任何运行在tmux内部的程序中是很困难的(例如,你将不得不使用tmux命令send-keys C-Tab – 正常情况下,必须启用xterm-keys才能发送这些xterm样式的密钥序列)。


您的terminfo条目编辑的问题可能是因为命名terminaltypes之后的每行都需要以Tab开始。 不以标签开头的行是新terminal条目的开头。 从技术上讲,NL TAB序列基本上是这种文件格式的一个续行; 每个条目是一个单一的逻辑线。

此外,如果您正在重新定义terminfo条目,请确保使用-xinfocmptic来保留用户定义的function(其中一些是相当标准的)。


1使用 sf.net的tmux Git仓库中的近期代码构build (位于可克隆的URL git://git.code.sf.net/p/tmux/tmux-code )。

Interesting Posts