Jak uniknąć wpisywania „spacji” po „^” w celu przejścia do katalogu w dired?

9

^jest kluczowym powiązaniem do przejścia do katalogu nadrzędnego w dired(„Katalog do góry”).

Jednak w Gnu Emacssprawie Windows 7 Professional 64-bitz moim układ klawiatury niemieckiej, nie jest wystarczające, aby wpisać „^”, ale muszę wpisać przestrzeń potem zrobić pracę kluczową wiążące.

Jak mogę ponownie zdefiniować przypisanie klawiszy, aby uniknąć konieczności naciskania spacji i poruszania się w górę tylko za pomocą „^”?


C-h k ^<space> zwroty

^ uruchamia polecenie dired-up-directory, który jest interaktywną skompilowaną funkcją Lisp w `dired + .el '.

Jest związany z ^,.

(dired-up-katalog i opcjonalne INNE OKNO)

Uruchom Dired w katalogu nadrzędnym bieżącego katalogu. Znajdź katalog nadrzędny albo w tym buforze, albo w innym buforze. W razie potrzeby tworzy bufor.

W zasadzie niegroźny
źródło
4
Jest to problem z systemem operacyjnym, ponieważ takie zachowanie brzmi jak klawisze lepkie i jest wbudowane w niektóre mapy klawiszy, na przykład us-intlw systemie Linux.
wasamasa,
Wygląda na to, że wasamasa ma rację. W takim przypadku powinieneś zapytać, jak powiązać polecenie z innym klawiszem.
Andrew Swann,
@AndrewSwann: Może, a może nie. Dobrze jest sprawdzić, tak. Ale zachowanie Linuksa powinno być tutaj nieistotne, zakładając, że microsoft-windowstag jest odpowiedni.
Drew
Najprostszym sposobem sprawdzenia tego byłoby sprawdzenie, czy to samo zachowanie dotyczy innych programów, na przykład przez wpisanie ^w notepad.exe.
wasamasa
3
Myślę, że masz tylko kilka opcji: (1) Użyj innego układu klawiatury, w którym ^ nie jest martwym klawiszem - odbywa się to na poziomie systemu operacyjnego, nie w emacs, lub (2) Powiąż inny klawisz dired-up-directoryi użyj go zamiast tego lub (3) Na żywo z problemem i wpisz spację po ^. Sam idę z (3), ale wydaje mi się to irytujące.
Harald Hanche-Olsen

Odpowiedzi:

11

W konfiguracji klawiatury klawisz ^ jest najprawdopodobniej „martwym klawiszem”. Jest to klucz przeznaczony do użycia w połączeniu z innym, w celu wytworzenia innej postaci. W tym przypadku ma to na celu tworzenie znaków akcentowanych: ^ e wytworzy ê, ^ a wytworzy â i tak dalej.

Nie powinno to jednak być specyficzne dla emacsa: Sądzę, że wszystkie twoje aplikacje wymagają naciśnięcia ^ i wygenerowania ^ na ekranie.

Aby rozwiązać ten problem, wystarczy użyć innego układu klawiatury. W przypadku twojego niemieckiego układu w środowisku Windows po prostu odwołam się do /superuser/280005/how-to-make-and-non-dead-keys-on-windows-7- z niemieckim układem klawiatury , mając nadzieję, że tak należy zrobić.

YoungFrog
źródło
0

Myślę, że potwierdziłeś powiązanie ^w Dired jako istnienie dired-up-directory, więc to, które polecenie jest wywoływane, nie stanowi problemu, chyba że ty lub coś, co ładujesz, doradziłeś to polecenie. (Użyj C-h k ^i daj nam znać, jeśli polecenie jest zalecane).

Oznaczono to tagiem microsoft-windows. Może wspomnieć o używanej wersji MS Windows. Nie widzę tego w 64-bitowym systemie Windows 7.

Czy widzisz to samo, jeśli uruchamiasz Emacsa przy użyciu runemacs -Qnp. Bez pliku init? Jeśli tak, podaj przepis tutaj, zaczynając od runemacs -Q. W takim przypadku może to być błąd Emacsa.

Jeśli nie widzisz problemu, emacs -Qrekursywnie podziel plik na pliki inicjujące, dopóki nie zawęzisz go, aby znaleźć winowajcę. Możesz użyć polecenia, comment-regionaby skomentować region kodu (użyj C-ugo, aby anulować komentarz regionu).

Gdy znajdziesz kod sprawcy, możesz go dokładniej zbadać. Możesz też zgłosić tutaj znalezione materiały, jeśli potrzebujesz dalszej pomocy. Aby uzyskać najlepszą pomoc, bądź jak najbardziej konkretny.

Co do redefiniowania klucza: To nie jest problem - wystarczy użyć (define-key dired-mode-map SOME-KEY 'dired-up-directory), gdzie SOME-KEYjest kluczowy opis. Na przykład, aby powiązać polecenie C-o, możesz użyć tego:

(define-key dired-mode-map (kbd "C-o") 'dired-up-directory)

Zaktualizowano po komentarzu i innych -

Ponieważ widzisz to samo emacs -Q, problemem jest albo coś w konfiguracji MS Windows (tj. Poza Emacsem), albo błąd w samym Emacsie.

Ale inne komentarze wyjaśniają, że problemem wydaje się być lepki klucz w MS Windows. Spróbuj wyłączyć lepkie klucze .

Rysował
źródło
3
To prawie na pewno nie ma sensu. Komentarz @wasamasa jest jednak całkowicie trafny. Aby to nieco rozwinąć, chodzi o to, że skoro ^ jest lepki, emacs nawet nie widzi zdarzenia naciśnięcia klawisza, dopóki użytkownik nie wpisze spacji.
Harald Hanche-Olsen
dziękuję za szczegółową odpowiedź! Tak, z runemacs.exe -Qtym samym. Wpisanie ^ w buforze powoduje wpisanie znaku tylko wtedy, gdy później piszę <Spacja> lub inny klawisz. Podobnie w diredtrybie, musi ^1 <space>przejść w górę. Dla define-key: ale chciałbym użyć klawisza ^ do tego powiązania, czy istnieje sposób, aby uniknąć oczekiwania na <spacja>?
MostlyHarmless
@Harald: więc co mogę zrobić?
MostlyHarmless