Eliminar mapa de teclas y deshabilitar completamente la clave en zsh

Eliminar mapa de teclas y deshabilitar completamente la clave en zsh

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 zshzlepá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 \acomo sugerí originalmente no parece tener este inconveniente, es decir,

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

información relacionada