Como remover um atalho de teclado zsh se não souber o que ele faz?

1

Como faço para desativar um atalho de teclado, se eu não sei o que é ou o que está sendo acionado?

Eu tenho o meu modo de tecla zsh definido para o modo vi, através de bindkey -v .

Para fazer uma pesquisa de histórico, pressione Esc para acessar o "modo de comando" e, em seguida, / para iniciar a pesquisa. No entanto, se eu pressioná-los muito rápido, ele faz outra coisa, mas eu não sei o que! Eu assumo Esc-/ é alguns atalhos de teclado, mas eu não sei o que é. Como faço para encontrar isso e desligá-lo?

    
por NHDaly 24.05.2016 / 19:16

4 respostas

3

Após algumas pesquisas, encontrei a resposta:

Para descobrir qual escape sequence a combinação de teclas está acionando, siga esta excelente resposta :

echo " Ctrl V Esc / "

Que exibe, para mim, como: echo "^[/" . A tecla Ctrl V força a seguinte tecla a ser exibida como uma seqüência de escape, em vez de ser interpretada. Então agora sabemos que estamos tentando encontrar o que está ligado a "^[/" .

Para listar todas as ligações de teclas zsh, simplesmente execute bindkey sem args:

$ bindkey
"^A"-"^C" self-insert
"^D" list-choices
"^E"-"^F" self-insert
"^G" list-expand
"^H" backward-delete-char
...
"^Y"-"^Z" self-insert
"^[" vi-cmd-mode
"^[," _history-complete-newer
"^[/" _history-complete-older   ### <--- Here it is.
"^[M" vi-up-line-or-history
"^[OA" vi-up-line-or-history
...
"^\\"-"~" self-insert
"^?" backward-delete-char
"\M-^@"-"\M-^?" self-insert

Então, tendo decidido que não me importo com _history-complete-older , só vou removê-lo. Eu adicionei isso ao meu .zshrc :

# Unbind the escape-/ binding because it gets triggered when I try to do a history search with "/".
bindkey -r "^[/"

Se, em vez disso, você quiser apenas vinculá-lo a outra chave, poderá usar:

bindkey -r "^[/"
bindkey "<some-other-key-combo>" _history-complete-older
    
por 24.05.2016 / 19:26
5

Provavelmente é

% bindkey '^[/'
"^[/" _history-complete-older
%

ou similar. E é assim que você descobre.

Leitura adicional

por 24.05.2016 / 19:25
1

Também está relacionada a configuração KEYTIMEOUT , que indica quanto tempo o ZSH aguardará para detectar sequências de teclas múltiplas, minimizadas pela configuração:

KEYTIMEOUT=1

Se você está se sentindo extremamente radical, você também pode remover todos os bindes ESC-something, de forma que o ZSH não possua sequências multi-chaves, perderá tempo esperando pela tecla de escape sendo pressionada.

bindkey -rpM viins '^['
bindkey -rpM vicmd '^['
    
por 24.05.2016 / 19:31
1

Esta questão tem duas partes,

  1. como descubro o que o mapeamento faz?
  2. como desassociar o mapeamento?

como faço para descobrir o que o mapeamento faz?

como mencionado em outras respostas

bindkey <key_combination>

isto imprimirá o comando zle relacionado à combinação de teclas

como desassociar o mapeamento?

bindkey -r <key_combination>

reference - link

    
por 20.08.2016 / 12:51