Exclua o mapa de teclado e desative completamente a chave no zsh

Exclua o mapa de teclado e desative completamente a chave no zsh

Quero desabilitar Insertcompletamente a chave no zsh. Essa tecla não tem utilidade real e só me irrita quando eu a pressiono acidentalmente.

Eu descobri como remover a ligação paraoverwrite-mode

bindkey -r "^[[2~"

Mas agora, quando eu realmente clico Insert, em vez de ativar o modo de substituição, ele imprime ~na posição do cursor.

Coisa semelhante acontece quando pressiono F12, o que não está vinculado a nada. Também imprime ~.

Como posso desabilitar a Inserttecla completamente (e F12também), para que pressioná-la não faça nada no zsh?

Não quero desabilitar Inserta chave globalmente, porque alguns outros programas podem usá-la para fins úteis.

Responder1

Se você pressionar uma tecla especial (como Insert) que envia uma sequência de escape que não é reconhecida por zsh, isso será feito. zsh tentará fazer algo com os bytes individuais da sequência de escape.

Olhando para o resultado de bindkey, parece que zsh não tem nenhuma função adequada que possa ser vinculada a uma chave paraignoraristo. Mas você poderia religar Insertpara uma macro vazia:

bindkey -s '\e[2~' ''

Da mesma forma para F12. Pressione Ctrl+ V F12para ver o que a sequência de escape F12envia, normalmente

bindkey -s '\e[24~' ''

De acordo com a zshzlepágina do manual, há uma limitação com esta abordagem:

Assim como os comandos ZLE, as sequências de teclas podem ser vinculadas a outras strings, usando `bindkey -s'. Quando tal sequência é lida, a string de substituição é empurrada de volta como entrada e o processo de leitura do comando começa novamente usando essas teclas falsas. Esta entrada pode invocar outras strings de substituição, mas para detectar loops o processo será interrompido se houvervintetais substituições sem que um comando real seja lido.

Vincular \acomo sugeri originalmente não parece ter essa desvantagem, ou seja,

bindkey -s '\e[2~' '\a'

informação relacionada