2013-07-25 13 views
6

Po powiązaniu funkcji z C-i. Wygląda na to, że tab jest związany z funkcją. Dlaczego to się dzieje? Czy jest rozpoznawany ten sam klucz w Emacs?Jaka jest relacja C-i i tab w Emacs?

+1

To jest kod ucieczki dla 'tab'. To znaczy. w starszych terminalach nie zawsze był klawisz tabulacji, więc aby wpisać znak tabulacji, użyto kombinacji "control" i "i". Podobnie, 'C-m' jest odpowiednikiem' enter' - wydaje się trochę marnować keybindings, ale tak to działa. –

Odpowiedz

4

zdarzyć one być połączone w konfiguracji domyślnej, ale to nie musi być w ten sposób:

(keyboard-translate ?\C-i ?\C-j) 

Teraz C-i zrobi przełamane, a tab wcięcie nadal.

+0

ciekawe, dlaczego tłumaczą "C-i" na "TAB", zamiast tylko przywiązywać "C-i" do funkcji "linii wcięć"? – Ben

+0

Myślę, że to dlatego, że C-i i TAB są takie same w bashu, a one i zachować spójność. –

+2

Powody historyczne. W prostym terminalu klawisz TAB wysłał ten sam kod klucza, co Ctrl-i. – Lindydancer

3

Naciśnięcie TAB na terminalu tekstowym wysyła do aplikacji kod C-i (który jest charcikiem o nazwie TAB), więc pod tty C-i i TAB są zwykle nie do odróżnienia. Emacs domyślnie zachowuje tę równoważność w środowiskach GUI, mapując zdarzenie tab na C-i, gdy nie ma wiązania dla tab (odbywa się to w function-key-map). Dlatego większość pakietów powinna wiązać swoje polecenia do znaku TAB (tj. C-i), a nie do zdarzenia tab, tak aby działało równie dobrze pod tty lub pod GUI. Ale jeśli chcesz je rozróżnić, jest to bardzo proste: wystarczy powiązać polecenie, które chcesz, ze zdarzeniem tab, a mapowanie z tab na C-i już się nie wydarzy.

+0

Dzięki za informacje! Poszedłbym w odróżnialny sposób. – ironsand

Powiązane problemy