
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 zshzle
pá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 \a
como sugeri originalmente não parece ter essa desvantagem, ou seja,
bindkey -s '\e[2~' '\a'