Домашній ключ не працює в терміналі


13

Я використовую термінал GNOME 2.7.3 та zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homeі Endне працюють. Нічого не відбувається і нічого не відображається, коли я натискаю на них. але вони працюють, коли я натискаю shift + Home(Прокручується до початку виведення оболонки.), а також працює в інших програмах GUI. Я гуглив і спробував наступне. Без змін :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS: Коли я перебуваю на останній вкладці і натискаю, Ctrl + pagedownя ;5~надрукую на екрані. Це дає якусь підказку?


Чи є .inputrcу вас домашній каталог? Це трапляється зі свіжо створеним користувачем? Це завжди бувало, чи це почалося одного дня?
bahamat

Ні, я не маю .inputrc. Я не дозволяю створювати нового користувача. Це завжди було так. Я живу з ctrl +aі ctrl+e.
балки

1
Я думаю, що в такому випадку я не пропоную ctrl+a& ctrl+e;-)
bahamat

Відповіді:


4

Я на фетровому капелюсі Тепер же я пропоную вам прочитати вікі Archlinux в ретельно , все це: Будинок і кінець клавіші не працюють .

Що я зробив, щоб виправити це:

  1. Натисніть Ctrl-V Home, надрукована послідовність клавіші Home надрукується. Це НЕ \e[4~ і , \e[1~як я очікував, дивлячись /etc/inputrc. Це було [Hі[F

  2. Витягніть інформацію про термінал infocmp $TERM >terminfo.src

  3. Відкрийте цей файл для редагування, наприклад vim terminfo.src, шукайте, khomeі kendвін призначений для чогось, скажімо, khome=\E[1~і kend=\E[4~який не працює в цьому випадку. видаліть його та замініть його послідовністю, яку ви знайшли на кроці №1, тому для мене після редагування це було: khome=\E[Hі kend=\E[F.

  4. Якщо ви хочете грати безпечно переконайтеся , що [Fі [H(або будь-якій послідовності ви просто використовували) не призначено на що - то інше або речі будуть переплуталися!

  5. запустити, tic terminfo.srcякий створює ~/.terminfoкаталог.

  6. Попереду .zshrcбудь-яких та інших команд поставте:export TERMINFO=~/.terminfo

Відкрийте нове вікно терміналу, і вам повинно бути добре, додому і кінець повинні працювати зараз.

PS: Метод bindkey теоретично повинен працювати і простіше, але це не було для мене.


Тестується також у CentOS + bash - працює! Дякую :)
Kasia Gauza

6

Послідовності втечі, що надсилаються функціональними та курсорними клавішами, складаються з символу втечі, за яким слід друкувати символи. Натисніть Ctrl+ Vпотім Home. Це дозволить вставити послідовність втечі буквально. Потім додайте bindkeyінструкцію до свого ~/.zshrc.

Інструкція, ймовірно, буде (зауважте O, не 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line

нічого не друкується, коли я натискаю Ctrl, а потім Головна. Нічого не відбувається. Спробував також змінити 0 на O.
balki

@balki Це Ctrl + V, а не Ctrl. Я щойно зрозумів, що у моїй відповіді є проблема форматування.
Жил "ТАК - перестань бути злим"

Спасибі! :) Я зараз звик до ctrl + aі ctrl +eта режиму vi
balki

5

Я знайшов , що я повинен був вдарити CTRL-v, відпустити, то Homeчи Endключ , щоб отримати послідовності ^[[Hі ^[[Fдля Homeі Endвідповідно. Додавання наступних рядків до .zshrcфайлу вирішило для мене проблему:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line

2

Додайте ці рядки до, /etc/zshrcа потім зробіть source /etc/zshrc(взято звідси )

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal

2

Ця відповідь дуже добре пояснила мою проблему і виправила її.

/programming//a/686458/5472892

TL; DR: змініть тип терміналу PuTTY з типового xtermна linux.

Можливо, хтось теж може ним скористатися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.