Привязать Ctrl + Tab и Ctrl + Shift + Tab в tmux

Я пытаюсь получить ctrl + tab и ctrl + shift + tab привязка для работы внутри сеанса tmux (я также использую PuTTY).

Мне уже пришлось перекомпилировать PuTTY, чтобы он правильно отправлял ctrl и shift. После использования ctrl + v, и я вижу, что ^[[27;5;9~ и ^[[27;6;9~ отправляются для ctrl + tab и ctrl + shift + tab соответственно. Есть ли способ привязать их к следующему и предыдущему окну внутри tmux?

Изменить: после некоторых исследований я думаю, что мне, возможно, придется настроить xterm для включения этих кодов клавиш. Есть идеи, как бы я это сделал?

Edit2: Итак, я обнаружил, что могу получить infocmp и перекомпилировать его. я добавил

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

до конца, только теперь он выдает ошибку. «запись не начинается с имен терминалов в первом столбце»


person dook    schedule 18.03.2013    source источник
comment
Инструкции по перекомпиляции PuTTY с поддержкой Ctrl-Tab. scnr.net/blog/index.php/archives/61   -  person Christian Long    schedule 23.03.2015


Ответы (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-keys.

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, вероятно, связана с тем, что каждая строка после той, которая называет тип терминала, должна начинаться с табуляции. Строки, которые не начинаются с табуляции, являются началом новой записи терминала. Технически последовательность NL TAB - это, по сути, продолжение строки в этом формате файла; каждая запись представляет собой одну логическую строку.

Кроме того, если вы переопределяете записи terminfo, обязательно используйте -x с infocmp и tic, чтобы сохранить определяемые пользователем возможности (некоторые из которых довольно стандартны).


1 Т.е. построено из недавнего кода в tmux репозитории Git на sf.net (по URL-адресу для клонирования git://git.code.sf.net/p/tmux/tmux-code).

person Chris Johnsen    schedule 18.03.2013
comment
tmux не распознает C-Tab и CS-Tab как действительные ключи (говорит, что это неизвестный ключ). И спасибо за внимание, я отменил свои изменения terminfo, потому что, честно говоря, я действительно не знал, кем я был делает. - person dook; 19.03.2013
comment
К сожалению, C-Tab (и C-S-Tab) распознаются в моей сборке tmux, но эта функция не является частью последней версии (1.7). Если вы создадите последнюю версию еще не выпущенного кода (т.е. из git: //git.code.sf.net/p/tmux/tmux-code), то он будет поддерживать эти ключи. Извините за путаницу! Я обновлю текст ответа, чтобы описать эту ситуацию. - person Chris Johnsen; 19.03.2013
comment
в качестве примечания, вы можете перезагрузить конфигурацию tmux на лету. : source-file ~ / .tmux.conf, если в tmux, или вы можете привязать его. - person damianb; 09.02.2014
comment
еще одно замечание для быстрой перезагрузки bind r source-file ~/.tmux.conf \; display "Reloaded!" поэтому я перезагружаю настройки с префиксом + Ctrl-r - person Mahmoud.Mahfouz; 04.12.2015
comment
Я использую терминал WSL с tmux версии 2.8, и он не работает. Ctrl-Tab ничего не делает. Я настраиваю параметры клавиш в приложении терминала, чтобы не использовать сочетания клавиш Ctrl-Tab / Shift-Tab, но это тоже не работает. Когда я делаю prefix + C-Tab, tmux показывает :.5I в строке состояния, а prefix + C-S-Tab показывает :.6I. Не уверен, что это ключ к чему-то. - person Tri Nguyen; 25.06.2019