Ctrl + problema com as teclas de seta esquerda / direita

25

Após a última atualização do sistema, o comando ctrl + seta esquerda / direita no terminal zsh não faz nada. Também ctrl + u tem algo errado, porque geralmente esse comando apaga do cursor até o início da linha, enquanto agora apaga a linha inteira. Alguém sabe como resolver esses problemas? obrigado a todos.

riskio
fonte
Você encontrou alguma resposta aceitável? Eu acho que a resposta de Gonçalo é ótima.
Léo Léopold Hertz # 25/16

Respostas:

44

FWIW, foi o que funcionou no meu ambiente (rhel5.x) usando o padrão do zsh.

bindkey "^[[1;5C" forward-word
bindkey "^[[1;5D" backward-word
Gonçalo
fonte
5
^[^[[De ^[^[[C, respectivamente, para OSX
Jon z
1
Confirmada, a proposta de Goncalo também funciona no Debian 8.5. Eu só me pergunto por que esse código não está embutido .zshrcpor padrão.
Léo Léopold Hertz # 25/16
Funciona como um encanto no Ubuntu Artful, obrigado!
Konrad Garus
Caso alguém queira usar em $terminfovez das seqüências de escape: as chaves $terminfo[kLFT5]e $terminfo[kRIT5]funcionou para mim
Griddo 22/01
14

Ctrl + U é mais provável porque você tem o cursor no final da linha. Em segundo lugar, a qual versão do Gentoo você se refere como a "última atualização do sistema"?

E o que você gostaria que o ctrl + esquerda / direita fizesse?

  • Adicione à configuração do zsh:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

  • E de sucata velha que encontrei (pode ajudar):

bindkey ";5C" forward-word
bindkey ";5D" backward-word

  • ou dê uma olhada neste link, o que deve ajudá-lo?

Nota: Se a configuração funcionar, mas as supostas teclas não fizerem o que você quer, talvez porque a definição das teclas seja diferente da sua e da minha, faça: cat > /dev/null e pressione as teclas que deseja obter e ajuste em conformidade.

Torxed
fonte
1
"Ctrl + U é mais provável porque você tem o cursor no final da linha" é claro, quero dizer quando meu cursor está no meio. "E o que você gostaria que o ctrl + esquerdo / direito fizesse?" normalmente ctrl + seta para a esquerda: pula a palavra para a esquerda etc ...
riskio 19/12/12
E qual shell / terminal você está usando? Certifique-se de usar o Emacs ou qualquer terminal que você costuma usar e / bin / bash? você está correndo pela tela?
Torxed 19/12/12
1
por favor leia a pergunta está lá ..
riskio 19/12/12
1
@ Masi Não tenho certeza, eu respondi dois anos antes dele e nossas respostas são quase idênticas, eu apenas mostrei duas maneiras diferentes de fazer isso ... e você pode mesclar as duas para combinar o que ele escreveu.
Torxed
1
@ Masi Tudo o que sei é que naquela época (lembre-se, 2010-2012 .. Foi há muito tempo) esses dois (e sua combinação) funcionavam para mim em muitos sistemas diferentes. Eu estava no Unix e no Linux (e ele estava no Gentoo, um SO com lançamento contínuo). E ainda há vestígios disso em muitos exemplos. Como este repositório. Agora, novamente, não tenho certeza do porquê, mas funcionou em pelo menos duas máquinas, então pensei em compartilhá-lo. E com certeza o dele está mais claro HOJE, e não me importo que ele receba todos os votos. Este é um post herdado.
Torxed
5

O que funciona não depende diretamente da distribuição (Gentoo, Debian, RHEL etc.) ou do shell (ZSH, KSH, BASH) - depende de qual terminal emulatoré usado e suas configurações: konsole, terminator, urxvt, lx-terminal etc. A distribuição pode importar se ela usa uma configuração de shell padrão diferente (fx.

Aqui estão algumas soluções específicas do emulador de terminal:

urxvt / rxvt-unicode (e talvez outros):

bindkey "^[Od" backward-word
bindkey "^[Oc" forward-word

terminator, konsole e xterm (e talvez outros):

bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word

Para uma abordagem mais geral, você inicia o terminal, pressione CTRL-V seguido da combinação de teclas que deseja o código de escape (o nome) - nesse caso, as combinações de teclas CTRL-leftarrow e CTRL-rightarrow - e coloque a saída para cada combinação de teclas entre as duas aspas.

miyalys
fonte
1
Você tentou a sugestão CTRL-V? Talvez o seu terminal interprete as teclas de maneira diferente, portanto, a tecla precisa estar ligada a diferentes "símbolos"?
miyalys
1
Eu atualizei minha resposta. Existem várias soluções, dependendo da terminal emulatorutilizada. A distribuição ou concha não importa. Provavelmente também é por isso que não está no .zshrc, porque o que funciona para um emulador de terminal não funciona para outro. Mas isso provavelmente poderia ser resolvido se zshrc fx. leia a variável de ambiente $ TERM e aplicou diferentes configurações de bindkey com base no resultado.
miyalys
2

Resolvido.

Terminal utilizado: Konsole .

Para resolver: clique com o botão direito do mouse no terminal (ou nas configurações da barra de menus) -> alterar perfil atual -> mapeamento do teclado -> alterar para Padrão (xfree4)

riskio
fonte
nem mesmo realmente relacionado ao zsh, mas com certeza, uma correção é uma correção.
Torxed 19/12/12