Eu apenas tentei
(set 'global-map (make-sparse-keymap))
mas a emissão C-hbainda mostra muita porcaria, especialmente na seção Ligações Globais :
Global Bindings:
key binding
--- -------
C-@ set-mark-command
C-a move-beginning-of-line
C-b backward-char
C-d delete-char
C-e move-end-of-line
C-f forward-char
C-g keyboard-quit
C-h help-command
TAB indent-for-tab-command
C-k kill-line
C-l recenter-top-bottom
RET newline
C-n next-line
C-o open-line
... ...
e há muito mais por vir.
Eu gostaria de me livrar deles completamente. Como posso fazer isso em uma chamada de função simples? Eu gostaria que a solução fosse uma limpeza total, em vez de um loop no qual todos esses mapas estão sendo configurados nil
. Agradeço antecipadamente.
NOTA: Por favor, nenhuma resposta de ensino ou comentários de spam como "Essas chaves são essenciais para a produtividade, não faça isso!" . Eu tenho uma camada de emulação altamente personalizada para edição de texto modal aqui, então não preciso dessas ligações padrão.
key-bindings
keymap
Alexander Shukaev
fonte
fonte
evil-mode
fato de você ter que escrever sua própria camada de edição modal?evil-mode
, mas algumas de suas funcionalidades de nível superior: operadores, objetos de texto e alguns comandos foram reescritos ou estendidos de alguma forma. Suas ligações padrão também foram totalmente apagadas e reorganizadas pelo teclado desde o início. No entanto, isso não tem nada a ver com a questão.make-keymap
.Respostas:
Retirado do Emacs Lisp Manual (consulte Controlando mapas ativos ):
Para citar o manual: "É muito incomum alterar o mapa de teclas global.". Nota de segurança: Certifique-se de salvar os buffers e sair do Emacs de maneira limpa posteriormente com um mapa de teclas diferente; caso contrário, será necessário eliminá-lo sem alterações salvas.
fonte
Embora as informações a seguir não sejam uma resposta direta à pergunta (já que ela já foi respondida por @wasamasa), ainda acredito que seja uma adição essencial à resposta. O ponto é que, depois de emitir
alguém de fato apaga completamente a seção Ligações Globais e, como conseqüência, não se pode mais digitar texto! Na esmagadora maioria dos casos, é claro que alguém deseja restaurar a capacidade de digitar texto, pois é essencial para qualquer editor de texto. Portanto, aqui está a única maneira de fazer isso:
Apenas para que vocês acreditem que esse código Emacs Lisp é a maneira correta de fazer isso, fornecerei a fonte que usei para produzi-lo. Por padrão, a capacidade de digitar texto com a página de código ASCII de 8 bits atual é implementada na
cmds.c
unidade de tradução do código-fonte Emacs C:Como você pode ver, o código Emacs Lisp acima é a replicação exata desse código C, exceto por uma linha adicional:
Considere uma ressalva, mas é importante ter essa linha ! Caso contrário, apenas 7 bits da página de código ASCII atual estariam disponíveis (independentemente do fato de termos inicializado todos os 8 bits).
fonte
self-insert-command
ligações do mapa de teclas global atual?(setq my-global-map (make-keymap)) (substitute-key-definition 'self-insert-command 'self-insert-command my-global-map global-map)
global-map
imediatamente saibam que problema enfrentarão e qual é a receita para resolvê-lo. Eles provavelmente aprenderão algo novo sobre o ASCII em geral e / ou como ele é implementado no Emacs em particular.