Emacs: jak wybrać dobre niestandardowe powiązania klawiszy?

10

Jestem początkujący Emacs i chciałbym, aby rozpocząć dodawanie niektórych globalnych kluczowych zwyczaj powiązania dla typowych zadań, takich jak replace-string, replace-regexitp, które ich nie mają domyślnie. Chcę dokonywać dobrych wyborów i widzę kilka problemów:

  • Zobacz wszystkie moje opcje - Jak mogę zobaczyć pełną gamę kluczy niezwiązanych we wszystkich trybach, których regularnie używam?

  • Zgodność / konwencja - Czy istnieją wspólne nieoficjalne powiązania lub wspólny klawisz „przestrzeni użytkownika”, za pomocą którego można rozpocząć osobiste powiązania niestandardowe?

  • Inne problemy - coś jeszcze, co powinienem wziąć pod uwagę?

Ian Mackinnon
źródło

Odpowiedzi:

9

Spróbuj spojrzeć na to pytanie na SO: Czy są jakieś kombinacje klawiszy emacsa zarezerwowane dla poleceń niestandardowych?

Jeśli chodzi o sprawdzenie, co jest dostępne, jest unboundbiblioteka (patrz pierwsza odpowiedź na powyższe pytanie).

Jedna konwencja (zaczerpnięta z mojej odpowiedzi na to pytanie ) to:

Możesz przedefiniować wszystko, ale konwencja polega na użyciu C-c l (gdzie ljest dowolna litera).

Jako użytkownik możesz przedefiniować dowolny klucz; ale zwykle najlepiej trzymać się sekwencji kluczowych, C-c po których następuje litera (duża lub mała litera). Te klucze są „zastrzeżone dla użytkowników”, więc nie będą kolidować z żadnym poprawnie zaprojektowanym rozszerzeniem Emacsa. Klawisze funkcyjne F5poprzez F9są również zarezerwowana dla użytkowników. Jeśli przedefiniujesz jakiś inny klucz, twoja definicja może zostać zastąpiona przez niektóre rozszerzenia lub główne tryby, które na nowo definiują ten sam klucz.

Pamiętaj tylko, że powiązania klawiszy są różne w każdym z różnych trybów (głównych i mniejszych), więc to, co jest dostępne w jednym buforze, niekoniecznie jest dostępne w innym. I włączaj powiązania klawiszy na możliwie najbardziej zlokalizowanym poziomie. Na przykład, jeżeli funkcja ma coś do linii kodu, nie rób klucz globalny wiążącą dla niej zdefiniować go w odpowiednim keymaps ( c++-mode-map, ruby-mode-mapetc.).

Jeśli chodzi o twoje konkretne zadania, zauważyłeś:

  • M-% znany jako query-replace
  • C-M-% znany jako query-replace-regexp

Ponadto, gdy szukasz ( C-slub C-M-s(i odwrotne warianty)), możesz wpisać M-%(lub C-M-%), aby bezpośrednio wpisać query-replace( query-replace-regexp) z ciągiem wyszukiwania jako substytut ... Całkiem przydatny.

Trey Jackson
źródło