Конфигурирование функциональных клавиш в PuTTY для Vim и Midnight Commander под tmux?

10

Прежде всего, я знаю, что могу использовать Alt+ 1(через 9 и 0), чтобы синтезировать соответствующие функциональные клавиши ( F1через F10) в Midnight Commander. Это помогло мне много раз, но по умолчанию я все еще нажимаю реальные функциональные клавиши интуитивно.

Суть: я пытаюсь запустить Vim и Midnight Commander внутри tmuxсессии (иногда в окне, иногда в панели), используя PuTTY.

По умолчанию у меня есть следующая конфигурация PuTTY:

PuTTY клавиатура

С ESC[n~отображением

Проблема при отображении ( map <F1> :tab help<CR>и также nmapи imap) F1в Vim состоит в том, что он дает эффект ~(случай переключения). И в самом деле , если я нажимаю F1через F5в оболочке, тильда ( ~) является результатом, наряду с колоколом. Функциональные клавиши прекрасно работают в Midnight Commander, хотя, используя эту настройку.

Есть одна странная вещь в вышеупомянутой настройке в дополнение к моим проблемам с F1: я также "mapped" F5( set pastetoggle=<F5>) в Vim. Как ни странно, это работает как шарм, хотя F5ключ на корпусе дает ~точно так же, как F1и т.д.

Примечание: при запуске Vim вне tmux, связывание по умолчанию (и мое переопределение) F1работают нормально!

С сопоставлением "Linux"

Поэтому, естественно, я попытался использовать настройку «Linux» в диалоговом окне выше. Поэтому, когда я F1нажимаю, Vim переходит в режим вставки в конце строки (эффект A). Midnight Commander не распознает ни одну из функциональных клавиш с этой настройкой. Конечно же, на оболочке F1дает мне Aи колокол ( F2а Bи тд).

Что мне здесь не хватает? Как я могу получить единообразное поведение, при котором Midnight Commander и Vim будут распознавать функциональные клавиши?


Дополнительная информация:

Удаленная система Ubuntu 14.04 с LANG=en_US.UTF-8.

TERMустанавливается TERM=xtermвне tmuxсеанса и TERM=screenпри просмотре изнутри панели или окна.

Я не использую:

set-option -g default-terminal "screen-256color"

переопределить тип терминала внутри tmux.

0xC0000022L
источник

Ответы:

8

Проблема TERM=xtermснаружи tmux. Не существует конфигурации PuTTY, которая соответствует xtermописанию терминала, и несоответствие поступает в screenили tmux(на ваше усмотрение).

Смотрите, например, в FAQ по ncurses. Почему бы просто не использовать TERM со значением "xterm"? , Рекомендация там, конечно, установить

TERM=putty

Быстрая проверка с использованием tackпоказывает, что эта комбинация ( TERM=putty, tmux) работает для Ubuntu 14.04 (вы должны установить ncurses-termпакет, который включает это).

Томас Дики
источник
Спасибо. На самом деле я не мог найти tackвообще apt-file searchни после установки пакета, который вы рекомендовали. Но toe -a|grep -i puttyподтверждает, что существует несколько определений терминалов PuTTY (включая a putty-256color). Я попробую и вернусь к вам, а также приму соответственно.
0xC0000022L
Я не заметил, что тэка не было в Ubuntu 14.04 (он был в Debian некоторое время, но, вероятно, упустил из виду, когда я выделил его из исходного архива ncurses). Проверяя мою машину, похоже, я запустил один из моих пакетов.
Томас Дики