Convención sobre el uso de Cx o Cc como teclas de prefijo

16

¿Cuáles son las convenciones para el uso C-x, C-co M-como combinaciones prefijo?

Por ejemplo: ¿es C-x, etc., para guardar o visitar buffers? ¿Es C-c, etc., para editar texto?

Antecedentes

Tal vez esta es una pregunta tonta. Utilizo un teclado en español y, a veces, redefinir las combinaciones de teclas que son comunes para un teclado en inglés (QWERTY). Por ejemplo: el comando de shell está vinculado en vanilla Emacs a M-!. En M-¡cambio, lo ato, porque M-!es M-shift-1, que no puedo presionar fácilmente. Me pregunto si hay convenciones que estoy anulando cuando hago este tipo de cambios

anquegi
fuente
like M-xes para "ejecutar comando extendido, esta es la puerta de entrada a muchas de las cosas sofisticadas que puedes lograr interactivamente en Emacs; te permite ejecutar cualquier función de Elisp por nombre". tiene C-cy C-xno tiene una descripción como esa?
Pinocho

Respuestas:

21

Si está hablando de vincular teclas para su propio uso, entonces esta es la regla: puede vincular las teclas que desee.

Si desea asegurarse de no vincular una clave que ya podría estar vinculada, utilice C-cseguida de una letra. Todas esas claves están reservadas para los usuarios (ver a continuación).


Si está hablando de vincular claves en el código (p. Ej., Una biblioteca) que escribe, para su uso por otros, entonces las reglas (convenciones) se describen aquí: Convenciones de vinculación de claves de nodo del manual de Elisp.

Las reglas principales allí, relacionadas con lo que preguntas, son las relacionadas con C-c:

  • No lo defina C-c LETTERcomo una clave en los programas Lisp. Las secuencias que consisten en C-cuna letra (mayúscula o minúscula) están reservadas para los usuarios; son las únicas secuencias reservadas para los usuarios, así que no las bloquee.

  • Las secuencias que consisten en C-cseguidas de un carácter de control o un dígito están reservadas para los modos principales.

  • Las secuencias que consisten en C-cseguida de {, }, <, >, : o ;son también reservados para los modos principales.

  • Las secuencias que consisten en C-cseguidas de cualquier otro signo de puntuación o símbolo ASCII se asignan para modos menores. No está absolutamente prohibido usarlos en un modo mayor, pero si lo hace, el enlace del modo mayor puede verse sombreado de vez en cuando por modos menores.

Notarás que no existe una convención al respecto C-x. Sin embargo, esta es una convención no declarada, o simplemente un buen consejo / práctica: si reemplaza algún enlace Emacs estándar existente (es decir, uno que obtiene de Emacs como distribuido, sin cargar bibliotecas de terceros), eso podría confundir o molestar a algunos usuarios de su código.


Puede acceder a ese documento dentro de Emacs de esta manera:

  1. C-h i, para abrir Info, el navegador de documentos.
  2. m el TAB RET, para m enu el isp ( TABpara completar), o simplemente haga clic en el Elispenlace con el mouse.
  3. key bi TAB, luego n TAB RETcompletar a Key Binding Conventions.

O puede usar identro del manual de Elisp, para completar entradas de índice:

  1. C-h i m el TAB RET.
  2. i key bi TAB, que completa key bindingy le muestra dos posibilidades: key bindingy key binding, conventions for. Escriba , TABpara completar al segundo, luego RETpara aceptarlo.
Dibujó
fuente
Es mejor seguir la convención para enlazar C-cy escribir cartas a los comandos del usuario. De esa manera, uno puede estar (casi) seguro de que no anula algún otro enlace desde un modo principal ya instalado o que se instalará algún día en el futuro.
Tobias
1
@Tobias: No estoy seguro de lo que estás diciendo. ¿Mejor que que? Todo lo de los convenios vinculantes clave deben seguirse, incluyendo no vinculante C-c+ letra en una biblioteca tercera parte.
Drew
Usted declaró correctamente en las primeras oraciones de su respuesta que no existen reglas estrictas para uso privado. Sin embargo, es aconsejable seguir las convenciones para las combinaciones de teclas de los usuarios por las razones que mencioné en mi primer comentario. Tal vez, podría agregar una nota sobre eso debajo de su regla de todo en la primera sección. Eso es todo lo que quería decir, Drew. Saludos cordiales,
Tobias
3
@Tobias: Agregué lo que creo que estás diciendo; Gracias. Pero no hay convenciones que un usuario pueda seguir con respecto a las asociaciones de teclas. Las "convenciones para las combinaciones de teclas del usuario" de las que habla no son convenciones para los usuarios. Son convenciones para codificar Lisp que serán utilizadas por otros. (Sé que sabes esto. Solo quiero ser claro, para cualquiera que lea esto).
Drew
¿Qué es un personaje de control?
Didier A.
2

La respuesta de @ Drew es mucho más matizada y detallada.

¡Esta es una pregunta perfectamente válida! Existe la convención de que C-xemacs lo reserva, mientras que el C-cprefijo se usa para las combinaciones de teclas definidas por el usuario.

Eche un vistazo a esto , especialmente la sección "Claves reservadas". Estoy bastante seguro de que esta información también se encuentra en el manual de emacs, pero parece que no puedo encontrarla en este momento. Las convenciones se describen en esta sección del manual de emacs lisp.

Panagiotis Koutsourakis
fuente
1
C-cseguido de una letra (minúscula o mayúscula) sin más modificadores está reservado para los usuarios. Muchas otras secuencias de teclas que comienzan con C-cestán reservadas para los modos principales, especialmente aquellas en las que la tecla de control también modifica la segunda pulsación de tecla.
Tobias
Estas en lo correcto, por su puesto. @Drew respondió a esta pregunta mucho mejor.
Panagiotis Koutsourakis
like M-xes para "ejecutar comando extendido, esta es la puerta de entrada a muchas de las cosas sofisticadas que puedes lograr interactivamente en Emacs; te permite ejecutar cualquier función de Elisp por nombre". tiene C-cy C-xno tiene una descripción como esa?
Pinocho