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

时间:2013-03-18 04:55:35

标签: linux putty tmux xterm gentoo

我正在尝试获取 ctrl + 标签 ctrl + shift + tab 绑定到tmux会话内部工作(我也使用PuTTY)。

我已经经历了必须重新编译PuTTY的痛苦,因此它会正确地发送 ctrl shift 。使用 ctrl + v 之后,我能够看到{kbd> ctrl ^[[27;5;9~和^[[27;6;9~ > + tab ctrl + shift + tab 。有什么方法可以将这些绑定到tmux中的next-window和previous-window?

编辑: 经过一些研究,我想我可能必须配置xterm来包含这些密钥代码。知道我会怎么做吗?

EDIT2: 所以我发现我可以检索infocmp并重新编译它。我添加了

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

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

1 个答案:

答案 0 :(得分:36)

最新的“未发布”版本的 tmux 会在您的终端发送它们后自动识别这些xterm样式的密钥序列(无需更改您的terminfo条目)。下一个版本(1.8?)也应该有这种支持。通过适当构建 tmux 1 ,您所要做的就是绑定 tmux 配置中的密钥:

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

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

(注意:~/.tmux.conf仅在服务器启动时处理。如果您对其进行更改,则需要退出所有会话并重新启动服务器,或使用(例如)tmux source ~/.tmux.conf让您现有的服务器重新处理该文件。)

此外,如果您希望 tmux 将这些(和其他)xterm样式的键序列传递给在 tmux 中运行的程序,那么您需要启用{ {1}}窗口选项。

xterm-keys

(如果您愿意,可以使用set-option -gw xterm-keys on 代替-w在每个窗口的基础上执行此操作。)


如果您希望能够在不输入前缀的情况下使用这些密钥,则可以使用“无前缀”绑定:

-gw

但这或多或少会将密钥“专用”到 tmux 。在 tmux 中运行的任何程序都很难输入这些键(例如,您必须使用 tmux 命令bind-key -n C-Tab next-window bind-key -n C-S-Tab previous-window - 正常情况下,{{1必须启用才能发送这些xterm样式的密钥序列。)


您的terminfo条目编辑的问题可能是因为命名终端类型的行之后的每一行都需要以Tab开头。不以制表符开头的行是新终端条目的开头。从技术上讲,NL TAB序列基本上是这种文件格式的续行;每个条目都是一条逻辑行。

此外,如果要重新定义terminfo条目,请务必使用send-keys C-Tab infocmp tic 来保留用户定义的功能(其中一些是相当标准的。)


1 I.e。根据{{​​3}}中最近的代码构建(在可克隆的网址xterm-keys上)。