tmux на удаленном компьютере не получает правильный префикс + клавиши со стрелками

Я подключаюсь из Windows-машины к удаленной машине с помощью MobaXterm и присоединяюсь к сеансу tmux. Некоторые клавиши не отправляются правильно, например, префикс + клавиши со стрелками просто печатают {A, B, C, D}, когда я нажимаю префикс + {вверх, вниз, вправо, влево}, когда эти клавиши должны перемещаться между панелями tmux. Если я использую Putty (вместо MobaXterm), я могу исправить это, используя терминал «linux» вместо «xterm», но в MobaXterm типы терминалов, которые я могу выбрать, это xterm, xterm-r6, vt100, vt220 и vt900. Ни один из них не работает.

Я предполагаю, что проблема связана с самой удаленной машиной (которая запускает Ubuntu 16.04), поскольку другие удаленные компьютеры не имеют этой проблемы.

Какие-либо предложения?

Существуют разные отношения между Red Hat 6 и Ubuntu 16 для записи screen-256color : последний добавляет dim и initc . Ни одно из этих изменений не связано с клавишами курсора.

Предположительно, значение TERM вне tmux равно xterm . Существуют также несвязанные изменения между двумя системами для записи xterm ( расширения цвета курсора, упомянутые в базе данных терминала).

Тем не менее, существует значительная разница между входами linux и xterm : записи xterm (в обоих случаях) инициализируют терминал для использования режима приложения для клавиш курсора и клавиатуры, а для linux – нет. Режим приложения посылает разные последовательности символов для клавиш курсора (что является точкой этого вопроса).

Red Hat 6 имеет tmux 1.6, Ubuntu 16 имеет tmux 2.3. В любом случае tmux считывает описание терминала и пытается сопоставить escape-последовательности, отправленные курсорными и функциональными клавишами вашего внешнего терминала, и сохраняет свое понятие этих ключей (в виде кода ключа и информации о переключении / управлении) перед генерированием эквивалентного выхода последовательность, которая следует за терминальным описанием внутри tmux .

Если ваш файл .tmux.conf имел конфликтующие настройки, как показано стрелками Ctrl +, работающими в tmux , то довольно старые и довольно новые программы tmux будут отличаться для модифицированных клавиш курсора:

  • в CentOS6 сдвинутый uparrow дает ^[[A^[[1;2A , а Ubuntu показывает ^[[A
  • управление-uparrow тоже отличается.

Причиной разницы является (на самом деле) улучшение в tmux , чтобы прочитать расширенные определения ключей из базы данных терминала. В старой версии tmux не заметил, что ключи в стиле xterm не были определены в screen-256color терминала screen-256color . Поэтому он передал информацию. В новой версии tmux видит, что они не определены, и (поскольку было сказано, что они знают о xterm-ключах), использует только те, которые определены в указанном описании терминала.

Дальнейшее чтение:

  • Мои клавиши курсора не работают

Это может быть конфликтный префиксный ключ, поэтому вы можете попробовать его изменить. Tmux позволяет это, и вы можете сделать это упорством, создав файл ~/.tmux.conf .

Строка для добавления в файл conf будет выглядеть примерно так:

  set-option -g prefix Ma 

Что изменит ваш префиксный ключ на Alt + A

Если вы не хотите, чтобы эти изменения сохранялись, вы можете просто запустить эту строку в виде команды из tmux.

Вот немного о правильном синтаксисе для этого (взято с man-страницы):

  ОСНОВНЫЕ ОБЯЗАТЕЛЬСТВА
     tmux позволяет команде привязываться к большинству ключей с ключом префикса или без него.  При указании ключей большинство из них представляют их -
      (например, от «А» до «Z»).  Клавиши Ctrl могут иметь префикс «C-» или «^», а Alt (meta) - «M-».  В дополнение
      следующие специальные имена клавиш принимаются: Вверх, Вниз, Влево, Вправо, BSpace, BTab, DC (Удалить), Конец, Ввод, Побег, F1 в F12,
      Home, IC (Insert), NPage / PageDown / PgDn, PPage / PageUp / PgUp, Space и Tab.  Обратите внимание, что для привязки ключей '' 'или' '', цитата
      метки необходимы, например: