Домашний ключ не работает в терминале


13

Я использую GNOME Terminal 2.7.3 и zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homeи Endне работают. Ничего не происходит и ничего не отображается, когда я нажимаю их. но они работают, когда я нажимаю shift + Home(прокручивает до начала вывода оболочки.), а также работают в других программах с графическим интерфейсом. Я погуглил и попробовал следующее. Без изменений :(

  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в вашем домашнем каталоге? Это происходит с недавно созданным пользователем? Это всегда происходило или это началось однажды?
Багамат

Нет у меня нет .inputrc. У меня нет разрешения на создание нового пользователя. Это всегда было так. Я живу с ctrl +aи ctrl+e.
Балки

1
Думаю, в этом случае я не буду предлагать ctrl+a& ctrl+e;-)
bahamat

Ответы:


3

Сейчас я на Fedora, но я предлагаю вам внимательно прочитать вики Archlinux , все это: ключи Home и End не работают .

Что я сделал, чтобы это исправить:

  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 теоретически должен работать и проще, но он не для меня.


6

Escape-последовательности, отправленные с помощью функциональных клавиш и клавиш курсора, состоят из escape-символа, за которым следуют печатные символы. Нажмите Ctrl+ Vпотом Home. Это вставит escape-последовательность буквально. Затем добавьте bindkeyинструкцию к вашему ~/.zshrc.

Инструкция, вероятно, будет (примечание O, нет 0):

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

ничего не печатается, когда я нажимаю Ctrl, а затем Home. Ничего не произошло. Пробовал изменить 0 на О, а также.
Балки

@balki Это Ctrl + V, а не Ctrl. Я только что понял, что в моем ответе была проблема с форматированием.
Жиль "ТАК - перестань быть злым"

Благодарность! :) Я сейчас привык ctrl + aи к ctrl +eрежиму ви
балки

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.