Por que a exportação do vim como EDITOR no zsh desabilita os atalhos de teclado?

22

Meu .zshrc é assim:

export EDITOR="/usr/bin/vim"

Agora, quando eu abro um terminal e insiro um atalho de teclado como ctrl a para ir ao começo da linha, ele não funciona. Em vez disso, a string ^A (ou alguma outra string, dependendo do atalho que eu digitei) é inserida no terminal:

emlai:~ % ^A

Remover a palavra export do meu .zshrc faz com que os atalhos de teclado funcionem corretamente:

EDITOR="/usr/bin/vim"

A exportação de EDITOR como algo diferente de vim também faz com que os atalhos de teclado funcionem, por exemplo:

export EDITOR="/usr/bin/nano"

Por que isso acontece?

Eu testei isso com bash , e os atalhos de teclado funcionam corretamente em todos os casos.

    
por zenith 22.04.2015 / 11:21

1 resposta

25

zsh como a maioria dos shells modernos tem a opção de escolher entre dois mapeamentos de teclado diferentes para edição de linha de comando: a vi one e emacs one. Em alguns shells (como tcsh ou readline -based como bash ), o emacs one é o padrão e provavelmente o que você espera.

Com zsh , você tem o modo emacs por padrão, a menos que $EDITOR ou $VISUAL contenha vi (se você for um usuário vi / nvi / vim / elvis (embora também vimacs e se $EDITOR seja /home/victor/bin/emacs ...), zsh assume que você prefere o modo vi ).

Para forçar um determinado modo, independentemente do valor de $EDITOR , adicione:

bindkey -e # for emacs
bindkey -v # for vi

ou seu equivalente mais portátil:

set -o emacs
set -o vi

para o seu ~/.zshrc . Veja

info -f zsh -n Keymaps

para detalhes.

    
por 22.04.2015 / 11:27