key-bindings – Evitar sobrescribir las combinaciones de teclas globales

Pregunta:

De acuerdo, este es un problema persistente para mí. A medida que sigo usando emacs cada vez más, estoy empezando a personalizarlo según mis necesidades instalando los paquetes (y / o definiendo funciones) y el único gran problema al que me enfrento cuando configuro un paquete es: – qué combinación de teclas usar para los comandos. No quiero sobrescribir las combinaciones de teclas globales con las que se envía emacs.

En este momento, para verificar si se está utilizando una key-binding para un comando o no, ejecuto counsel-discbinds e ingreso la key-binding para ver si ya está asignada a un comando. Si no, procedo a asignarlo a un comando. Pero hay otro problema, el counsel-descbinds muestra el mapeo solo del major-mode activo actual. Ha habido momentos en los que me di cuenta ¡OH! He sobrescrito otro enlace de major-mode con este comando y tuve que reasignar nuevamente a otro enlace (que apesta: |).

Entonces, ¿qué puedo hacer para evitar sobrescribir global-key-bindings combinaciones global-key-bindings ? ¿Hay algo que enumere todas las combinaciones de teclas no utilizadas que podría usar para un comando (que no se usa para ningún otro major-mode )? ¿Y cuál es una buena regla general cada vez que creo nuevas vinculaciones para comandos?

EDITAR : Agregando a la lista de respuestas, encontré estos dos comandos que me parecen muy útiles cuando desea definir combinaciones de teclas: –

  • (describe-personal-keybindings) definido en bind-key (que viene con use-package ). Aquí se enumeran todas las key-bindings que realiza el usuario final de acuerdo con mapas específicos del modo.
  • Comando free-keys definido en el paquete free-keys.el . Esto mostrará todos los acordes clave que no están vinculados a ningún comando para el búfer actual. También puede cambiar la clave de prefijo a algo como Cc , para enumerar todos los acordes de clave no enlazados.

Respuesta:

Encuentro que ayuda hacer todas sus combinaciones de teclas personales en un modo menor personalizado en lugar del mapa global. En su forma más básica, es solo un modo como este:

(define-minor-mode my-keys-mode
  "Minor mode for my personal keybindings."
  :global t
  :keymap (make-sparse-keymap))

Esto hace algunas cosas útiles:

  1. Primero, cuando golpea la combinación de teclas de un modo principal, su combinación de teclas tendrá prioridad, y no al revés. Esto puede causar problemas, pero al menos no se sorprende cuando presiona una tecla y no hace lo que espera.

  2. Más importante aún, no está sobrescribiendo nada, solo sombreando. Si encuentra que ha golpeado algo importante, o incluso si solo necesita verificar cuál es el enlace predeterminado para una clave, puede deshabilitar el modo my-keys-mode temporalmente. (Recomiendo darle a my-keys-mode una combinación de teclas global, como la única excepción al consejo anterior).

  3. Facilita la reversión de cambios. Si decide restablecer un enlace a los valores predeterminados, puede vincularlo a cero en su mapa de teclas, en lugar de tener que reiniciar Emacs o averiguar qué comando sobrescribió.

La única gran limitación de este enfoque es que, de forma predeterminada, no hay una forma limpia de usarlo para combinaciones de teclas específicas del modo. Si desea echar un vistazo o usarmi modo de combinación de teclas , agregué soporte para esto que alivia la mayoría de los problemas, pero todavía me encuentro con problemas relacionados con la precedencia de vez en cuando.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım