O Qt suporta ligações de teclas no estilo Emacs , no entanto, apenas para até quatro teclas. Para mostrar por que esse limite deve ser aumentado, seria útil mostrar exemplos de atalhos de teclado no estilo Emacs com ainda mais teclas do que isso. Existem exemplos conhecidos para isso ou talvez uma maneira de encontrar programaticamente sequências de teclas longas definidas nos mapas de teclas do Emacs?
edit: Eu pensei que isso era de conhecimento comum, mas uma sequência de teclas é um conjunto de chaves conforme lido por read-key-sequence
. Tente F1 k
seu candidato e veja se ele descreve seu comando ou um comando não relacionado que o precede.
key-bindings
keymap
wasamasa
fonte
fonte
C-u 1 0 0 0 C-n
quais são as seis chaves.F1 k C-u 1 0 0 0 C-n
e veja queC-u
é uma sequência de teclas por si só.Respostas:
Eu testei com o seguinte script,
E o mais longo que recebo com o meu
.emacs.d
éC-x c C-x r i
qual é algum comando do leme, e com oemacs -q
que recebo oC-x a i l
que executa o comandoinverse-add-mode-abbrev
.fonte
C-x M-c M-b u t t e r f l y
:) Eu tinha esquecido que eu tinha feito isso ...where-is-internal
domina de longe o tempo de CPU aqui, mas você ainda pode facilmente raspar alguns ciclos, precedendo destrutivamente a lista mais curta pela via mais longa(setq keyseqs (nconc (where-is-internal sym nil nil t) keyseqs))
.M-x butterfly
? Eu só ligou-o a esse comando para uma maior autenticidade :)Não posso responder sobre o que há de mais longo em algum lugar, mas aqui estão algumas informações que podem ajudar.
Eu tenho algumas bibliotecas que fornecem um conjunto de comandos relacionados vinculados a chaves em um mapa de teclas que eu vinculo a uma chave de prefixo.
Como não quero cooptar chaves de usuário etc., normalmente vinculo essa chave de prefixo em, digamos
C-x
ou, paraother-window
comandos, emC-x 4
(mapa de teclasctl-x-4-map
).As mesmas considerações se aplicam a grupos de comandos em um mapa de teclado: eles às vezes obtêm seu próprio mapa de teclado. E assim por diante, recursivamente.
Espero que pelo menos alguns usuários possam querer reconectar esses mapas de teclas (em qualquer nível) com suas próprias chaves de prefixo mais curtas, ou podem querer vincular comandos específicos a sequências de teclas mais curtas. Mas não quero fazer isso na própria biblioteca, obviamente.
Aqui está um exemplo de uma chave bastante longa:
C-x 4 j t . % *
(sete pressionamentos de tecla), que é obrigada a comandaricicle-bookmark-file-this-dir-all-tags-regexp-other-window
no Marcador + .Anatomia:
Na
C-x 4
tecla do prefixo (ctl-x-4-map
).Na
j
tecla prefixo, que é para todos os comandos para pular para um marcador .Na
t
tecla prefixo, que é para todos os comandos para ir para os marcadores que são marcados de alguma forma.Na
.
chave de prefixo, que é para todos os comandos para saltar para indicadores que são para arquivos no diretório atual que são marcados de alguma forma.Na
%
chave de prefixo, que é para todos os comandos para saltar para marcadores que são para itens no diretório atual que possuem tags que correspondem a um regexp para o qual você é solicitado.Na
*
chave, que é para todos os comandos para ir para os marcadores que são para itens no diretório atual que possuem tags , TODOS os quais correspondem a uma regexp solicitada. (Por outro lado,C-x 4 j t . % +
é para os favoritos ALGUNS cujas tags correspondem ao regexp.)Tudo isso é convencional no Bookmark + (e parte corresponde às convenções Dired, BTW):
j
é para comandos de salto ,t
é para tag ,.
é para diretório atual ,%
é para regexp e*
é para todos (+
é para alguns ).(Oh, e usando @ sexp das mkcms, eu recebo
C-x 4 j t f % *
, que é igualmente longo. Of
significa arquivo . É comoC-x 4 j t . % *
, mas os marcadores candidatos para a conclusão são todos os marcadores de arquivos, não apenas aqueles para os arquivos no diretório atual (.
).)fonte
Magit
adiciona sequências longas, pois permite que as opções sejam alternadas. Por exemplo, quando você solicita o log, pode selecionar opções curtas ou longas, se deseja ramificações remotas ou não, se deseja exibir graficamente as ramificações e assim por diante. A solicitação básica para um log é apenas um par de pressionamentos de tecla domagit-status
buffer, mas você pode adicionar muito mais.O mesmo se aplica à confirmação, duas teclas para uma confirmação básica, mas muitas adições opcionais.
Portanto, a questão está subespecificada, você está considerando apenas um
stock
(o que isso significa) emacs?fonte
F1 k
e veja quantas teclas você pode digitar até que ele descreva o comando.