Como posso usar uma chave diferente de ENTER para sair do menu / widget de conclusão do zsh?

3

Como muitos usuários zsh, tenho a configuração completa para que, quando eu estiver em um prompt de comando e invoco a conclusão, apareça um menu que possa ser navegado com as teclas de seta direcionais. ou seja, no meu ~/.zshrc

autoload -Uz compinit
compinit

zstyle ':completion:*' menu yes select
zstyle ':completion:*:*:cd:*' menu yes select

Se eu quiser apagar o diretório /var/log/nginx/somewebsite , vou iniciar o comando usando a conclusão como:

ubuntu% sudo rm -rf /var/l<TAB>
lib/    local/  lock@   log/

Eu navego os itens com as setas direcionais, que são inseridas na linha de comando enquanto o cursor se move sobre elas; uma vez na seleção desejada, pressione ENTER basicamente para sair do widget de menu e retornar o cursor para a linha de comando.
O problema é que ENTER é usado para aceitar o item do menu de conclusão e também executar o comando, e eu continuo pressionando ENTER pensando que estou aceitando a conclusão quando estou realmente executando estes comandos parcialmente completos!

Posso remapear o comando "aceitar sugestão de conclusão e widget de saída" do zsh para algo diferente de ENTER ?
por exemplo. TAB ou até mesmo Ctrl + y (o mesmo que o mapa de teclado para conclusão do vim)

    
por the_velour_fog 01.05.2016 / 15:02

1 resposta

1

Eu encontrei a documentação para isso em

  • %código%
    • O MÓDULO ZSH / COMPLISTA
      • seleção de menu

Para ligar a tecla Ctrl y para aceitar uma sugestão de conclusão, você pode usar

bindkey ^Y accept-search

Há uma nota na documentação

Note that the following (complist functions) always perform the same task within the menu selection map and cannot be replaced by user defined widgets, nor can the set of functions be extended:

assim, você não pode desvincular Enter do man zshmodules , na verdade o comando

bindkey -r ^M accept-search

só consegue desvincular accept-search de uma linha de comando normal.

    
por 09.07.2016 / 05:54