Por que algumas sequências ZLE estão sendo remapeadas para “self-insert”?

1

Eu tenho mexido com os meus dotfiles ultimamente e, em algum momento, perdi o uso dos ^A e ^K keymappings padrão, que eu uso com frequência.

bindkey -L | grep '\^[AK] 
# bindkey -R "^A"-"^C" self-insert
# bindkey "^K" self-insert

Mas a página man do zshzle afirma claramente que ^K e ^A são mapeados por padrão para kill-line e asf , como eu esperava.

Não consigo encontrar em nenhum dos meus arquivos de inicialização onde isso teria sido remapeado! Eu certamente não fiz:

print /usr/local/ ~/.z^(compdump|sh_history) ~/dotfiles | xargs ag 'bindkey'
# /Users/vercingetorix/.zshrc
# 56:bindkey "^[[3~" delete-char
# 
# /Users/vercingetorix/dotfiles/zsh/zshrc
# 56:bindkey "^[[3~" delete-char

É tudo o que tenho!

Na verdade, eu sei que não fiz:

zsh -x &> diagnose.log
exit
wc -l diagnose.log
#     3802 diagnose.log
[[ -z $(ag '\^[AK]' diagnose.log) ]] && print 'nothing!'
# nothing!
[[ -z $(ag 'bindkey -[evaM]' diagnose.log) ]] && print 'nothing!'
# nothing!

Então, o que dá? O que está acontecendo com os mapeamentos padrão?

    
por shadowtalker 27.12.2015 / 17:06

1 resposta

1

Eu descobri!

Na página zshzle man:

In addition to these names, either 'emacs' or 'viins' is also linked to the name 'main'. If one of the VISUAL or EDITOR environment variables contain the string 'vi' when the shell starts up then it will be 'viins', otherwise it will be 'emacs'. bindkey's -e and -v options provide a convenient way to override this default choice.

Eis que, recentemente, eu defini EDITOR e VISUAL para "vim". Remover essa configuração me devolve minhas ligações de teclas (eu acho que esses são os padrões do Emacs, mas eles também são ligações familiares do Mac).

    
por 27.12.2015 / 17:24

Tags