A tecla Home não funciona no terminal

13

Estou usando o GNOME Terminal 2.7.3 e o zsh 4.3.9 (x86_64-unknown-linux-gnu)

Homee Endnão está funcionando. Nada acontece e nada é exibido quando eu os pressiono. mas eles funcionam quando eu pressiono shift + Home(Rola para o início da saída do shell.) e também funcionam em outros programas da GUI. Pesquisei no Google e tentei o seguinte. Nenhuma alteração :(

  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: Quando estou na última guia e pressiono, Ctrl + pagedownsou ;5~impresso na tela. Isso dá alguma pista?

balki
fonte
Você tem um .inputrcno seu diretório pessoal? Isso acontece com um usuário recém-criado? Isso sempre aconteceu ou começou um dia?
bahamat 8/09/11
Não, eu não tenho .inputrc. Não tenho permissão para criar um novo usuário. Sempre foi assim. Eu estou vivendo com ctrl +ae ctrl+e.
balki
1
Eu acho que nesse caso eu não vou sugerir ctrl+a& ctrl+e;-)
bahamat

Respostas:

3

Agora estou no fedora e sugiro que você leia o wiki do Archlinux com cuidado , tudo: as teclas Home e End não estão funcionando .

O que eu fiz para corrigi-lo:

  1. Pressione Ctrl-V Home, a sequência de escape da tecla Home é impressa. É não \e[4~ e \e[1~como eu esperava para ser olhando /etc/inputrc. Foi [He[F

  2. Extraia as informações do terminal infocmp $TERM >terminfo.src

  3. Abra esse arquivo para edição, como vim terminfo.src, procure khomee kendestá atribuído a algo, digamos khome=\E[1~e kend=\E[4~que não esteja funcionando neste caso. remova-o e substitua-o pela sequência que você encontrou na etapa 1, então, para mim, depois de editá-lo foi: khome=\E[He kend=\E[F.

  4. Se você quiser jogar pelo make segura certeza [Fe [H(ou qualquer seqüência que você acabou de usar) não é atribuída a outra coisa ou as coisas vão ser confuso!

  5. execute o tic terminfo.srcque cria o ~/.terminfodiretório.

  6. Acima de .zshrcqualquer e de todos os outros comandos, coloque:export TERMINFO=~/.terminfo

Abra uma nova janela do terminal e você deve ficar bem, a casa e o final devem estar funcionando agora.

PS: O método bindkey teoricamente deve funcionar e é mais fácil, mas não funcionou para mim.

hkoosha
fonte
6

As seqüências de escape enviadas pelas teclas de função e cursor consistem em um caractere de escape seguido por caracteres imprimíveis. Pressione Ctrl+ e Vdepois Home. Isto irá inserir a sequência de escape literalmente. Em seguida, adicione uma bindkeyinstrução ao seu ~/.zshrc.

É provável que a instrução seja (observe O, não 0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line
Gilles 'SO- parar de ser mau'
fonte
nada é impresso quando pressiono Ctrl e Home. Nada acontece. Tentei mudar 0 para O também.
balki
@balki É Ctrl + V, não Ctrl. Acabei de perceber que havia um problema de formatação na minha resposta.
Gilles 'SO- stop be evil'
Obrigado! :) Agora estou utilizado para ctrl + ae ctrl +ee vi modo
balki
5

Eu descobri que tinha que pressionar CTRL-v, soltar, depois a tecla Homeou Endpara obter as seqüências ^[[He ^[[Fpara Homee Endrespectivamente. Adicionar as seguintes linhas ao .zshrcarquivo resolveu o problema para mim:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line
Johann
fonte
2

Adicione essas linhas /etc/zshrce faça um source /etc/zshrc(extraído daqui )

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
Abhinandan NM
fonte
2

Esta resposta explicou meu problema muito bom e o corrigiu.

/programming//a/686458/5472892

TL; DR: altere o tipo de terminal PuTTY de padrão xtermpara linux.

Talvez alguém possa usá-lo também.

Thorian93
fonte