ALT + seta movendo-se entre palavras em zsh e iTerm2

11

Eu entrei em um dos servidores do provedor de hospedagem e notei ALT + left e ALT + direito movido entre as palavras em um prompt do shell no GNU Screen.

Que tipo de atalhos de teclado eu preciso configurar e onde obter esse comportamento para o meu OS X zsh local rodando no iTerm2?

    
por Mikko Ohtamaa 21.05.2012 / 22:16

4 respostas

23

Encontrei a solução aqui: link . Copiará as partes mais importantes, caso o link seja desativado.

  1. Ir para Preferências, Perfil, Chaves.
  2. Defina sua tecla esquerda to para agir como um caractere de escape.
  3. Localize o atalho atual para ⌥ ← ou crie um novo, com as seguintes configurações:
    • Atalho de teclado: ⌥ ←
    • Ação: Enviar sequência de escape
    • Esc +: b
  4. repita para o ⌥ → atalho de teclado com as seguintes configurações:
    • Atalho de teclado: ⌥ →
    • Ação: Enviar sequência de escape
    • Esc +: f
por 09.03.2014 / 20:05
5

Você está procurando as palavras-chave backward-word e forward-word . Portanto, se você estiver em um shell em que as atenções de tecla não estão funcionando, tente bindkey -L | grep backward-word para verificar se elas estão configuradas. Há mais informações sobre isso em zshzle (1) .

Você pode definir manualmente a associação de teclas digitando algo assim:

bindkey 'Ctrl+v Alt+Right' forward-word

bindkey 'Ctrl+v Alt+Left' backward-word

Eu também tive alguns problemas com atalhos de teclado e o problema era quase sempre que a tecla Option / Alt enviava algo diferente do Meta / Escape esperado.

    
por 21.05.2012 / 22:49
2

Eu não posso falar pelo iTerm, mas estas são as combinações de teclas que usei para resolver este problema no Terminal GNOME, no Fedora 19, rodando o ZSH 5.0.7 com o Oh-my-zsh:

bindkey "\e[1;3C" forward-word
bindkey "\e[1;3D" backward-word

onde \e == A sequência da chave de escape (conforme documentado na seção 4.1.1 )

e [ == O (maiúscula O; conforme documentado na seção 4.2.1 ), em alguns casos. Por exemplo, em tmux esta substituição é necessária para mim, porém sem tmux é necessário que nenhuma substituição seja feita e [ == [

Os códigos de tecla para uma sequência podem ser obtidos usando cat e pressionando a seqüência desejada. Por exemplo, os resultados de pressionar <Alt+Right> devem ser interpretados da seguinte forma:

$ cat
^[[1;3C

^[ == \e == A seqüência de teclas de escape

[ == [ sem tmux OR [ == O (maiúscula o) com tmux

1;3 == Não tenho certeza sobre isso, mas deve significar logicamente <Alt>

C == A tecla de seta para a direita

Então, essa sequência é dada para bindkey no arquivo ~/.zshrc para persistência, como o primeiro argumento, e é ligada , significando que o pressionamento de tecla no argumento um executará um comando de editor específico (ou widget em termos zsh), para o widget, que na primeira linha do exemplo acima é forward-word .

O ~/.zshrc deve ser re-sourced após esses dois comandos serem anexados a ele com:

$ source ~/.zshrc

Agora, um aborrecimento no meu sistema é que essa combinação específica fez com que o emulador de terminal emitisse um sinal sonoro toda vez que o comando era emitido, o que resolvi desativando o

'Edit'->'Profile Preferences'->'Terminal Bell' checkbox.

    
por 22.02.2016 / 00:31
0

Sugiro que você use zkbd para configurar atalhos de teclado. Eu uso e Alt + Esquerda / Alt + Direita funciona bem no iTerm2. Veja zshcontrib(1) para detalhes sobre zkbd.

    
por 22.05.2012 / 20:05