
Quiero desactivar Insertla clave por completo en zsh. Esta tecla no tiene ningún uso real y sólo me molesta cuando la presiono accidentalmente.
Encontré cómo quitar la encuadernación paraoverwrite-mode
bindkey -r "^[[2~"
Pero ahora, cuando presiono Insert, en lugar de activar el modo de sobrescritura, se imprime ~
en la posición del cursor.
Sucede algo similar cuando presiono F12, que no está vinculado a nada. También imprime ~
.
¿Cómo puedo desactivar la Inserttecla por completo (y F12también), para que presionarla no haga nada en zsh?
No quiero deshabilitar Insertla clave globalmente, porque algunos otros programas pueden usarla con fines útiles.
Respuesta1
Si presiona una tecla especial (como Insert) que envía una secuencia de escape que no es reconocida por zsh
, lo hará. zsh intentará hacer algo con los bytes individuales de la secuencia de escape.
Al observar el resultado de bindkey
, parece que zsh no tiene una función adecuada que pueda vincularse a una clave paraignorarél. Pero podrías volver a vincularte Inserta una macro vacía:
bindkey -s '\e[2~' ''
Lo mismo para F12. Presione Ctrl+ V F12para ver qué secuencia de escape F12envía, normalmente
bindkey -s '\e[24~' ''
Según la zshzle
página del manual, existe una limitación con este enfoque:
Además de los comandos ZLE, las secuencias de teclas se pueden vincular a otras cadenas usando `bindkey -s'. Cuando se lee dicha secuencia, la cadena de reemplazo se retrocede como entrada y el proceso de lectura del comando comienza nuevamente usando estas pulsaciones de teclas falsas. Esta entrada puede por sí misma invocar otras cadenas de reemplazo, pero para detectar bucles el proceso se detendrá si hayveintetales reemplazos sin que se lea un comando real.
Vincularse a \a
como sugerí originalmente no parece tener este inconveniente, es decir,
bindkey -s '\e[2~' '\a'