Как настроить PuTTY так, чтобы Home / End / PgUp / PgDn работал правильно в bash?

Клавиши Home, End, PageUp, PageDown все типа a ~ в моей сессии bash вместо перемещения курсора / просмотра вокруг. Почему это происходит и какие настройки мне нужно изменить?

 GNU bash, version 4.0.28(1)-release (x86_64--netbsd) PuTTY v0.60 

Первоначально вопрос:

  • Отключено: нет доступных методов аутентификации
  • В PuTTY, почему нажатие клавиши «Home» на оболочке (bash) набирает «~»? Вернее, как мне заставить его переместить курсор в начало введенной мной команды?

    (Я думал, что причина в том, что ~ является домашним каталогом, но ответы говорят, что это не так.)

  • Отключено: нет доступных методов аутентификации
  • 7 Solutions collect form web for “Как настроить PuTTY так, чтобы Home / End / PgUp / PgDn работал правильно в bash?”

    Измените строку типа терминала на вкладке «Соединение»> «Данные» с по умолчанию «xterm» на «linux». Это сработало для меня.

    Введите описание изображения здесь

    Это происходит потому, что у вас нет правильного типа терминала PuTTY, или потому, что на вашем сервере не установлены правильные определения terminfo.

    В системах на базе Debian пакет ncurses-term (версия 5.7 + 20081213-1) включает файлы определения terminfo для типов терминалов putty, putty-256color и putty -vt100 . Если у вас установлен этот пакет, вы можете установить строку «Тип терминала» на «putty» вместо стандартного «xterm» в конфигурации сеанса Putty (Connection -> Data).

    Стивен Айронс также упоминает «linux» как другой тип терминала, который работает; Я считаю, что это правильно из предыдущего опыта, но не проверял его в последнее время.

    В моих системах это позволяет Home и End работать правильно, хотя PageUp / PageDown не прокручивают окно консоли. (Они работают правильно в приложениях ncurses, таких как aptitude , и Shift-PgUp / Shift-PgDn прокручивают окно консоли.)

    Если вы хотите проверить, какой код отправлен PuTTY на ваш терминал, когда вы нажимаете клавишу или комбинацию клавиш, вам просто нужно выпустить Ctrl+V а затем нажать нужную клавишу.

    Например, на моем ящике нажатие клавиши « Домой» приведет к созданию следующей строки на моем терминале:

     ^[[1~ 

    Это означает, что PuTTY отправляет escape-символ ^ [ за ним следует строка [1 ~ .

    Вы можете создать файл ~/.inputrc в папке $HOME или, альтернативно, файл /etc/inputrc зависимости от вашей системы. Затем заполните этот файл кодами PuTTY и соответствующими действиями Bash, которые вы хотите активировать Bash.

    Примечание. Замените каждый символ [ символ эквивалентной строкой \ e

    В моем примере, я добавлю строку с моим кодом Home key и началом строки (который по умолчанию привязан к Ctrl+A в Bash):

     "\e[1~": beginning-of-line 

    FYI, мой файл inputrc имеет следующий контент:

     set meta-flag on set input-meta on set convert-meta off set output-meta on "\e[1~": beginning-of-line # Home key "\e[4~": end-of-line # End key "\e[5~": beginning-of-history # PageUp key "\e[6~": end-of-history # PageDown key "\e[3~": delete-char # Delete key "\e[2~": quoted-insert # Insert key "\eOD": backward-word # Ctrl + Left Arrow key "\eOC": forward-word # Ctrl + Right Arrow key 

    От @Cimbali: Больше связываемых команд (например, предыдущая история: Переместить вверх по списку истории), доступных на этой странице справки .

    Crtl + A приведет вас к началу строки

    Вот список сочетаний клавиш Bash

    То, что на самом деле посылает, это ^[[1~ которая является терминальной escape-последовательностью, состоящей из:

    • ^ [- побег
    • [- левая квадратная скобка
    • 1 – один
    • ~ – тильда

    Вы можете увидеть это, нажав Ctrl + V, затем « Домой» .

    Вы можете исправить свою проблему, изменив настройку клавиатуры PuTTY для ключей Home и End на rxvt (что делает escape-последовательность ^[[H или изменением $ TERM, которое вы используете (или путем редактирования ~/.inputrc ) ,

    Кстати, нет никакой связи между тильдой, которую вы получаете, когда вы нажимаете Home и тильду, которая представляет домашний каталог. Например, в моей установке « Страница-Вниз» вызывается ^[[6~ которая также печатает тильду, если она не будет правильно интерпретироваться.

    Не все эти варианты работали для меня. Я запускаю старую систему AIX. Мне пришлось добавить следующие псевдонимы в мой .profile

     alias __A=$(print '\0020') # ^P = up = previous command alias __B=$(print '\0016') # ^N = down = next command alias __C=$(print '\0006') # ^F = right = forward a character alias __D=$(print '\0002') # ^B = left = back a character 

    Я не мог заставить его работать с другими методами. Однако я создал этот скрипт AutoHotkey, который работает, если ваша оболочка Bash:

     #IfWinActive ahk_class PuTTY PgUp::Send +{PgUp} PgDn::Send +{PgDn} Home::Send ^a ; beginning of line End::Send ^e ; end of line +^Del::Send ^k ; delete whole line after cursor +End::Send ^k ; delete whole line after cursor +Home::Send ^u ; delete whole line before cursor ^Del::Send !d ; delete word after cursor ^BS::Send ^w ; delete word before cursor ^Left::Send !b ; jump word left ^Right::Send !f ; jump word right #IfWinActive 

    Следует использовать с осторожностью , так как не все эти горячие клавиши bash работают в других программах.

    Давайте будем гением компьютера.