Convenção sobre o uso de Cx ou Cc como chaves de prefixo

16

Quais são as convenções para a utilização C-x, C-cou M-como teclas de prefixo?

Por exemplo: é C-xetc. para salvar ou visitar buffers? É C-cetc. para edição de texto?

fundo

Talvez essa seja uma pergunta boba. Eu uso um teclado em espanhol e, às vezes, redefinimos as combinações de teclas comuns a um teclado em inglês (QWERTY). Por exemplo: o comando shell é vinculado no vanilla Emacs a M-!. Em M-¡vez disso, eu o vinculo , porque M-!é M-shift-1, que não consigo pressionar facilmente. Gostaria de saber se existem convenções que estou substituindo quando faço esses tipos de alterações.

anquegi
fonte
like M-xé para "execute o comando estendido, este é o gateway para muitas das coisas sofisticadas que você pode realizar interativamente no Emacs; permite executar qualquer função Elisp por nome". tem C-ce C-xnão tem uma descrição como essa?
Pinóquio

Respostas:

21

Se você está falando sobre vincular chaves para seu próprio uso, esta é a regra: você pode vincular quaisquer chaves que desejar.

Se você quiser ter certeza de não vincular uma chave que já possa estar vinculada, use C-cseguido de uma letra. Todas essas chaves são reservadas para usuários (veja a seguir).


Se você está falando sobre vincular chaves no código (por exemplo, uma biblioteca) que você escreve, para uso de outras pessoas, as regras (convenções) são descritas aqui: nó Convenções de Vinculação de Chaves do manual Elisp.

As principais regras, relacionadas ao que você pergunta, são as seguintes C-c:

  • Não defina C-c LETTERcomo uma chave nos programas Lisp. Sequências consistindo de C-ce uma letra (maiúscula ou minúscula) são reservadas para os usuários; elas são as únicas sequências reservadas para os usuários, portanto, não as bloqueie.

  • Sequências consistindo de C-cseguidas por um caractere de controle ou um dígito são reservadas para os modos principais.

  • Sequências consistindo em C-cseguida por {, }, <, >, : ou ;são também reservada para os principais modos.

  • Sequências consistindo de C-cseguidas por qualquer outra pontuação ASCII ou caractere de símbolo são alocadas para modos menores. O uso deles no modo principal não é absolutamente proibido, mas se você fizer isso, a ligação do modo principal poderá ser ocultada periodicamente pelos modos secundários.

Você observará que não há nenhuma convenção relacionada C-x. Porém, uma convenção não declarada ou apenas um bom conselho / prática: Se você substituir alguma ligação padrão existente do Emacs (por exemplo, uma que você recebe do Emacs como distribuída, sem carregar bibliotecas de terceiros), isso pode confundir ou incomodar alguns usuários do seu código.


Você pode acessar esse documento no Emacs, desta maneira:

  1. C-h i, para abrir Info, o navegador de documentos.
  2. m el TAB RET, para m enu el isp ( TABpara concluir) ou apenas clique no Elisplink com o mouse.
  3. key bi TAB, n TAB RETpara concluir a Key Binding Conventions.

Ou você pode usar ino manual Elisp, para concluir as entradas do índice:

  1. C-h i m el TAB RET.
  2. i key bi TAB, que completa key bindinge mostra duas possibilidades: key bindinge key binding, conventions for. Digite , TABpara concluir o segundo e depois RETaceitá-lo.
Desenhou
fonte
É melhor seguir a convenção para vincular C-ce enviar uma carta aos comandos do usuário. Dessa forma, pode-se (quase) ter certeza de que não substitui outra ligação de um modo principal já instalado ou que será instalado algum dia no futuro.
Tobias
1
@ Tobias: Não sei o que você está dizendo. Melhor que o que? Todas as convenções de vinculação de chave devem ser seguidas, incluindo a não vinculação C-c+ LETTER em uma biblioteca de terceiros.
21818 Drew
Você afirmou corretamente nas primeiras frases da sua resposta que não existem regras rigorosas para uso privado. No entanto, é aconselhável seguir as convenções para vinculação de teclas do usuário pelas razões que dei no meu primeiro comentário. Talvez você possa adicionar uma observação sobre isso abaixo da regra de tudo correr na primeira seção. Era tudo o que eu queria dizer, Drew. Atenciosamente, #
213 Tobias
3
@ Tobias: adicionei o que acho que você está dizendo; obrigado. Mas não convenções para um usuário seguir com relação às combinações de teclas. As "convenções para combinações de teclas do usuário" das quais você fala não são convenções para os usuários. São convenções para codificar Lisp que serão usadas por outros. (Eu sei que você sabe disso apenas quero ser claro, para qualquer outra pessoa ler isto..)
de Drew
O que é um personagem de controle?
Didier A.
2

A resposta de @ Drew é muito mais sutil e detalhada.

Esta é uma pergunta perfeitamente válida! Existe a convenção de que o C-xarquivo é reservado pelo próprio emacs, enquanto o C-cprefixo é usado para combinações de teclas definidas pelo usuário.

Dê uma olhada nisso , especialmente na seção "Chaves reservadas". Tenho certeza de que essas informações também estão descritas no manual do emacs, mas não consigo encontrá-las no momento. As convenções são descritas nesta seção do manual emacs lisp.

Panagiotis Koutsourakis
fonte
1
C-cseguida por uma letra (minúscula ou maiúscula) sem outros modificadores é reservada para os usuários. Muitas outras seqüências de teclas iniciadas por C-csão reservadas para os principais modos - especialmente aqueles em que o segundo pressionamento de tecla também é modificado pela tecla de controle.
21418 Tobias
Você está certo, é claro. @Drew respondeu a esta pergunta muito melhor.
Panagiotis Koutsourakis
like M-xé para "execute o comando estendido, este é o gateway para muitas das coisas sofisticadas que você pode realizar interativamente no Emacs; permite executar qualquer função Elisp por nome". tem C-ce C-xnão tem uma descrição como essa?
Pinóquio