一尘不染

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

linux

我试图获得一个ctrl+ tabctrl+ shift+ tab绑定在tmux会话中工作(我也在使用PuTTY)。

我已经经历了必须重新编译PuTTY的痛苦,以便它能够正确发送ctrl和发送shift。使用ctrl+之后v,我能够看到^[[27;5;9~^[[27;6;9~分别发送给ctrl+ tabctrl+
shift+ tab。有什么办法可以将这些绑定到tmux内部的下一个窗口和上一个窗口?

编辑:经过一些研究,我想我可能必须配置xterm来包括那些键码。知道我该怎么做吗?

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

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

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


阅读 386

收藏
2020-06-03

共1个答案

一尘不染

一旦您的终端发送了 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 内部运行的程序,那么您将需要启用xterm- keyswindow选项。

set-option -gw xterm-keys on

(如果愿意,可以使用-w而不是逐个窗口地执行此操作-gw。)


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

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

但是,这或多或少将“专用”于 tmux 的密钥。很难在 tmux 内运行的任何程序中键入这些键(例如,您必须使用 tmux 命令send- keys C-Tab-通常xterm-keys必须启用以发送这些xterm样式的键序列)。


terminfo条目编辑的问题可能是因为在命名终端类型的那一行之后的每一行都必须以Tab键开头。不以制表符开头的行是新终端条目的开头。从技术上讲,NL
TAB序列基本上是此文件格式的换行符。每个条目都是一条逻辑行。

另外,如果要重新定义terminfo条目,请确保-xinfocmptic 一起使用以保留用户定义的功能(其中一些功能是非常标准的)。


1即从sf.net(位于可克隆URL
)的 tmux Git存储库中的最新代码构建git://git.code.sf.net/p/tmux/tmux-code

2020-06-03