Проблема заключается в том, что значение переменной среды TERM не соответствует настроенным характеристикам терминала - в частности, настройкам "Домой и клавиши завершения" и "Функциональные клавиши и клавиатура".
Это может быть трудно понять правильно.
Что ожидает сервер Debian.
Введите infocmp -I
чтобы увидеть, что ожидает ваш компьютер.
$ infocmp -I
# Reconstructed via infocmp from file: /usr/share/terminfo/a/ansi
ansi|ansi/pc-term compatible with color,
…
rmul=\E[m, il1=\E[L, kbs=^H, kcbt=\E[Z, kcud1=\E[B,
khome=\E[H, kich1=\E[L, kcub1=\E[D, kcuf1=\E[C, kcuu1=\E[A,
…
khome=\E[H
означает, что сервер ожидает получения трех символов ESC [ H
при нажатии Home.
Вы можете посмотреть, что ожидается для других значений TERM
$ infocmp -I xterm
# Reconstructed via infocmp from file: /usr/share/terminfo/x/xterm
xterm|X11 terminal emulator,
…
is2=\E[!p\E[?3;4l\E[4l\E>, il1=\E[L, ka1=\EOw, ka3=\EOu,
kb2=\EOy, kbs=\177, kbeg=\EOE, kc1=\EOq, kc3=\EOs,
kdch1=\E[3~, kcud1=\EOB, kend=\E[4~, kent=\EOM, kf1=\EOP,
kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13=\E[25~,
kf14=\E[26~, kf15=\E[28~, kf16=\E[29~, kf17=\E[31~,
kf18=\E[32~, kf19=\E[33~, kf2=\EOQ, kf20=\E[34~, kf3=\EOR,
kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~,
kf9=\E[20~, khome=\E[1~, kich1=\E[2~, kcub1=\EOD,
kmous=\E[M, knp=\E[6~, kpp=\E[5~, kcuf1=\EOC, kcuu1=\EOA,
…
Здесь вы можете видеть, что, если TERM
был установлен на xterm
, этот сервер ожидал бы получить ESC [ 1 ~
при нажатии Home (khome
)
Если вышеупомянутое слишком загадочно, попробуйте infocmp -L
Вы также можете делать такие вещи, как tput khome | hexdump -C
если вы знаете имена возможностей terminfo для ключей, которые вас интересуют.
$ tput khome | hexdump -C
00000000 1b 5b 48 |.[H|
или, возможно, более разборчиво
$ tput khome | hexdump -e '12/1 "%3_u" "\n"'
esc [ H
или посмотреть, что может означать другой параметр TERM
$ TERM=xterm tput khome | hexdump -e '12/1 "%3_u" "\n"'
esc [ 1 ~
если вывод пуст, сервер думает, что у типа терминала (TERM) нет этого ключа.
Что на самом деле отправлено Putty.
Чтобы увидеть, что на самом деле отправляет Home , запустите vi
, нажмите i (для режима вставки), нажмите Ctrl+V, затем нажмите Home и нажмите Esc, чтобы выйти из режима вставки.
Решение
Изменяйте конфигурацию Putty (или TERM) до тех пор, пока отправленное не будет соответствовать ожидаемому другому концу.
Например
Сделайте, как указано в https://www.chiark.greenend.org.uk/~sgtatham/putty/wishlist/terminfo.html, затем в Putty, Configuration, Connection, Data, терминал типа string = PuTTY и сохраните его. Может быть.