1

Когда я подключаюсь к своему серверу Debian Wheezy Beta 4 с PuTTY 0.62 в Windows 7, у меня возникает проблема. Моя оболочка входа в систему Zsh, и она настроена на обработку ALT + DEL для действия delete-word (удаляет одно слово справа от курсора). Строка в конфигурации выглядит следующим образом:

bindkey -e "\e[3;3~" kill-word

Привязка прекрасно работает при подключении через команду ssh от gnome-terminal . Но когда я подключаюсь через PuTTY, это действие не выполняется. Вместо этого [3~ выводится на консоль. Насколько я понимаю, это неэкранированная последовательность для клавиши DEL в xterm . Некоторое время я думал, что PuTTY просто проигнорирует модификатор ALT и отправит только DEL, но в этом случае действие, привязанное к DEL, будет выполнено так, как если бы я нажал только эту клавишу.

Таким образом, я предполагаю, что PuTTY использует некоторую последовательность для комбинации клавиш, которую я не знаю и которая заставляет выводить [3~ появляется на экране. Как я могу узнать, какую последовательность посылает PuTTY, чтобы настроить Zsh для правильной обработки?

Обновление: похоже, что PuTTY должен игнорировать все нажатия клавиш-модификаторов ALT в своей текущей реализации. Вот выдержка из файла исходного кода TERMINAL.C который удаляет флаг ALT из переменной modifiers:

/*
 * Alt is only used for Alt+keypad, which isn't supported yet, so
 * ignore it.
 */
modifiers &= ~PKM_ALT;

Это не объясняет мне, почему нажатие ALT + DEL не имеет такого эффекта, как нажатие только DEL. Также это не объясняет, почему комбинация клавиш по умолчанию для действия kill-word в Zsh (ALT + D) работает нормально.

1 ответ1

0

Простой способ получить эти последовательности - запустить cat на удаленном хосте. Таким образом, я получаю ^[[3~ для DEL , но ^[^[[3~ с ALT+DEL. (Замазка 0,62 на W7/64)

Так что, наверное

bindkey -e "\e\e[3~" kill-word

будет делать то, что вы хотите.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .