Emacs global-set-klucz do C-TAB
Próbuję ustawić powiązanie klawiszy na Ctrl + TAB w Emacsie. Użyłem następującego wywołania:
(global-set-key (read-kbd-macro "C-TAB") 'my-func)
Jednak, gdy go używam, dostaję
<C-tab> is undefined
Komunikat o błędzie. Próba ustawienia powiązania NA "C-tab" powoduje wyświetlenie komunikatu o błędzie.
Jak mogę ustawić Wiązanie na C-TAB?
6 answers
(global-set-key [C-tab] 'my-func)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 17:02:57
W przeciwieństwie do innych sugerowanych, dobrym pomysłem jest użycie kbd
(lub read-kbd-macro
, co w zasadzie jest tym samym) na wypadek, gdybyś chciał użyć tych samych plików konfiguracyjnych w innych wersjach Emacsa; kbd
działa w kilku wersjach Emacsa i Xemacsa, gdzie wewnętrzna reprezentacja sekwencji kluczy jest inna.
(global-set-key (kbd "<C-tab>") 'my-func)
Format wejściowy używany przez {[2] } jest udokumentowany w docstringu edmacro-mode
:
Słowa specjalne RET, SPC, TAB, DEL, LFD, ESC oraz NUL specjalne znaki kontrolne. Słowa muszą być napisane wielkimi literami.
Słowo w nawiasach kątowych, np.
, lub , oznacza klawisz funkcyjny. (Zauważ, że w standardowej konfiguracji klawisz funkcyjny I klawisz sterujący RET są synonimami.) Możesz użyć nawiasów kątowych na słowach RET, SPC itp. ale oni nie są tam wymagane.
Jest to napisane nieco niestety; zakładka o której mowa w pierwszym punkcie jest znak ASCII dla TAB, A dodanie modyfikatora Control robi z nim coś bezsensownego. Po naciśnięciu klawisza Control-Tab, Emacs widzi go (przez system okienkowy; nie będzie działał w terminalu tekstowym) jako <tab>
z modyfikatorem sterowania, który możesz reprezentować jako C-<tab>
lub <C-tab>
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 17:30:38
To dlatego, że używasz read-kbd-macro
nieprawidłowo. Kiedy widzisz co jest związane z kluczem:
C-h k C-TAB
Emacs mówi:
<C-tab> is undefined.
Musisz włączyć w wywołaniu read-kbd-macro
.
(global-set-key (read-kbd-macro "<C-tab>") 'my-func)
I nie wiem jak wygenerować <C-TAB>
, ale to nie to samo co <C-tab>
.
(equal (kbd "<C-TAB>") (kbd "<C-tab>"))
->
nil
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 17:29:12
Zauważ, że możesz również wywoływać global-set-key
interaktywnie. Następnie możesz zobaczyć poprawne polecenie wiązania za pomocą repeat-complex-command
(Zobacz także KeybindingGuide):
M-x: global-set-key
- wpisz żądaną kombinację klawiszy
-
Użycie
C-x ESC ESC
(repeat-complex-command
) aby zobaczyć polecenie apropiate. W Twoim przypadku dostaję:(global-set-key (quote [C-tab]) (quote my-func))
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-28 07:12:31
Zamiast używać read-kbd-macro
, spróbuj użyć bardziej prostej składni?
;(global-set-key [(control tab)] 'my-func)
Może prostsza składnia coś zmieni?
Więcej informacji na temat read-kbd-macro i global-set-key .Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-27 17:01:24
W podręczniku gnu emacs lisp reference manual, sekcja 21.1 "sekwencje klawiszy", odwołują się do \t do reprezentowania klucza tab.
Używając składni pokazanej w podręczniku Lispu, użyłbym następującego polecenia:
(global-set-key (kbd "C-\t") 'my-func)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-27 04:13:01