Altere suas linhas de teclas para:
bindkey '^[[1;5C' emacs-forward-word
bindkey '^[[1;5D' emacs-backward-word
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?
Altere suas linhas de teclas para:
bindkey '^[[1;5C' emacs-forward-word
bindkey '^[[1;5D' emacs-backward-word
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.
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
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.
Tags zsh