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 enbind-key
(que viene conuse-package
). Aquí se enumeran todas laskey-bindings
que realiza el usuario final de acuerdo con mapas específicos del modo. - Comando
free-keys
definido en el paquetefree-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 comoCc
, 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:
-
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.
-
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 amy-keys-mode
una combinación de teclas global, como la única excepción al consejo anterior). -
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.