Problema com ligações Ctrl-Esquerda / Direita em oh-my-zsh

6

Por alguma razão, não consigo ligar Ctrl-Left Arrow e Ctrl-Right Arrow para mover entre as palavras no ZSH após instalar o oh-my-zsh no meu MacBook Pro.

No iTerm2 eu tenho meus atalhos de teclado configurados para "Send Escape Sequence" [1; 5D e [1; 5C, que funcionou antes de instalar o oh-my-zsh.

Eu também tentei descomentar

bindkey '^[^[[C' emacs-forward-word
bindkey '^[^[[D' emacs-backward-word

em ~ / .oh-my-zsh / lib / key-bindings.zsh, também sem sucesso. Nos dois cenários, pressionar Ctrl-Esquerda / Direita envia "5D" e "5C" para a tela.

TLDR: Alguém tem Ctrl-Esquerdo e Ctrl-Direito para se mover entre as palavras quando usa oh-my-zsh?

    
por yalestar 22.06.2011 / 19:32

4 respostas

6

Altere suas linhas de teclas para:

bindkey '^[[1;5C' emacs-forward-word
bindkey '^[[1;5D' emacs-backward-word
    
por 18.07.2011 / 04:02
4

Este trabalhou para mim:

bindkey "[C" emacs-forward-word   #control left
bindkey "[D" backward-word        #control right

Na verdade, pressionei Controle + à esquerda e Controle + à direita entre o "" e isso a magia.

    
por 01.02.2012 / 12:39
3

Pressione ^v(Ctrl-v) ou cat no zsh shell , seguido pelo key-combinations(Ctrl+left) do que você deseja usar para obter o valor da chave de ligação correspondente. Use esta saída no comando. Isso varia de sistema para sistema, dependendo do driver do terminal, etc.

No meu caso Ctrl-left foi ^[O5D . Portanto, bindkey '^[O5D' backward-word

Se você quiser dar um passo à frente, o link oferece a idéia de generalizar as chaves de zsh, com a ajuda do cmd autoload zkbd ; zkbd . Uma vez feito, adicione a seguinte linha, source ~/.zkbd/$TERM-${${DISPLAY:t}:-$VENDOR-$OSTYPE} ao seu .zshrc. De agora em diante, você pode escrever como [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char . Desta forma, você pode copiar o mesmo .zshrc para diferentes máquinas também.

Informação adicional: Peter Stephenson diz ...the function keys on your keyboard... It depends a good deal on how your windowing system or terminal driver handles them... Por isso, é melhor validar todas essas associações de chaves antes de executar qualquer script, embora isso não varie na maioria dos casos.

Para entender detalhadamente as ligações de teclas do zsh, verifique este guia. link .

Se você quiser saber como uma tecla pressionada é exibida, link

    
por 04.09.2014 / 14:59
0

Então você tem seu emulador de terminal enviando uma seqüência CSI (ESC + [ + 1;5C ) para a chave, mas você disse ao seu shell com o comando bindkey para assistir a entrada do terminal por um diferente seqüência CSI (ESC + ESC + [ + C ), e você está se perguntando por que isso não funciona?

Não funciona pelo motivo óbvio.

    
por 23.06.2011 / 12:24

Tags