Używam GNU Emacs, zwykle jak ta, emacs -nw
która uruchamia wersję terminalową (w przeciwieństwie do wersji GUI z okienkami).
Piszę artykuły szkolne, LaTeX
więc używam ich flyspell-mode
do sprawdzania pisowni w emacsie. Działa to dobrze w wersji GUI, ale w terminalu mam problemy z naciśnięciem klawisza C-.
( Ctrl- .). W tty nic to nie robi, a w terminator
lub gnome-terminal
po prostu wprowadza „.”.
Co mogę zrobić, aby zrobić to, co robi w wersji okienkowej (pokaż sugestie pisowni dla błędnie napisanego słowa)?
EDYCJA: W przypadku, gdy ma to znaczenie, używam Ubuntu 12.04 z Emacs 23.3.1 (który moim zdaniem jest domyślny z repozytorium 12.04).
command-line
emacs
cg505
źródło
źródło
Esc
-x
flyspell-mode
? To działa dla mnie.flyspell-mode
odM-x
, aleESC x
nie robi to żadnej różnicy.ESC-TAB
.ESC TAB
alboM-TAB
obie działają dla mnie. Dzięki za wskazówkę @McNisse.Odpowiedzi:
Wygląda na to, że na istotną część tego pytania udzielono już odpowiedzi w komentarzach, ale aby zająć się pierwotną przyczyną w przypadku, gdy jesteś ciekawy, myślę, że ctrl-. nie działa w terminalu z powodu pewnych ograniczeń emulatorów terminali. W standardowym terminalu zdefiniowano ctrl, aby wysłać kod ASCII klawisza, który naciskasz minus 64 (właśnie dlatego ctrl-J (74) wysyła znak nowej linii (10), a ctrl-I (73) wysyła na przykład tab (9) ). Ponieważ kod ASCII tego okresu wynosi 46, odjęcie 64 dałoby -18, co jest nieprawidłowe, ponieważ jest ujemne i nie ma żadnych negatywnych kodów ASCII, a zatem nic nie jest w stanie odebrać i zrozumieć emacs.
Kiedy uruchamiasz emacsa w trybie okienkowym, mechanizm emulatora terminala jest pomijany i zamiast tego używana jest bardziej niezawodna obsługa klawiatury X11, która może obsługiwać bardziej niejasne naciśnięcia klawiszy (zamiast zmniejszać każde naciśnięcie klawisza do jednego znaku ASCII, program otrzymuje oryginalny klucz plus wszystkie odpowiednie modyfikatory, osobno). Prawdopodobnie niemożliwe jest, aby emacs oparty na tty obsługiwał ctrl-. chyba że wprowadzisz niestandardowe modyfikacje emulatora terminala (i prawdopodobnie również emacsa).
źródło
'C-.'
dobrze za pomocą emacsa w Xterm, ale nie za pomocą urxvt lub st. Wiesz, dlaczego tak może być?Chociaż powyższa odpowiedź stanowi dobre wyjaśnienie, dlaczego nie działa, tak naprawdę nie dotyczy tego, jak to zrobić. Dla
iTerm2
można rozwiązać ten problem przez dodanie klucza mapowania dla sekwencji ucieczki . Wyobrażam sobie, że byłoby coś podobnego wterminator
lubgnome-terminal
źródło