Quais são as convenções para a utilização C-x
, C-c
ou M-
como teclas de prefixo?
Por exemplo: é C-x
etc. para salvar ou visitar buffers? É C-c
etc. 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.
key-bindings
elisp-conventions
anquegi
fonte
fonte
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". temC-c
eC-x
não tem uma descrição como essa?Respostas:
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-c
seguido 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 LETTER
como uma chave nos programas Lisp. Sequências consistindo deC-c
e 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-c
seguidas por um caractere de controle ou um dígito são reservadas para os modos principais.Sequências consistindo em
C-c
seguida por{
,}
,<
,>
,:
ou;
são também reservada para os principais modos.Sequências consistindo de
C-c
seguidas 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:
C-h i
, para abrir Info, o navegador de documentos.m el TAB RET
, para m enu el isp (TAB
para concluir) ou apenas clique noElisp
link com o mouse.key bi TAB
,n TAB RET
para concluir aKey Binding Conventions
.Ou você pode usar
i
no manual Elisp, para concluir as entradas do índice:C-h i m el TAB RET
.i key bi TAB
, que completakey binding
e mostra duas possibilidades:key binding
ekey binding, conventions for
. Digite, TAB
para concluir o segundo e depoisRET
aceitá-lo.fonte
C-c
e 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.C-c
+ LETTER em uma biblioteca de terceiros.A resposta de @ Drew é muito mais sutil e detalhada.
Esta é uma pergunta perfeitamente válida!
Existe a convenção de que oC-x
arquivo é reservado pelo próprio emacs, enquanto oC-c
prefixo é 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.fonte
C-c
seguida por uma letra (minúscula ou maiúscula) sem outros modificadores é reservada para os usuários. Muitas outras seqüências de teclas iniciadas porC-c
são reservadas para os principais modos - especialmente aqueles em que o segundo pressionamento de tecla também é modificado pela tecla de controle.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". temC-c
eC-x
não tem uma descrição como essa?