Konwencja o używaniu Cx lub Cc jako kluczy prefiksów

16

Jakie są konwencje dotyczące korzystania C-x, C-club M-jako klawisze prefiks?

Na przykład: czy C-xitp. Służy do zapisywania lub odwiedzania buforów? Czy C-citp. Służy do edycji tekstu?

tło

Może to głupie pytanie. Używam hiszpańskiej klawiatury i czasami redefiniuję skróty klawiaturowe, które są wspólne dla klawiatury angielskiej (QWERTY). Na przykład: polecenie powłoki jest powiązane w waniliowym Emacsie z M-!. Wiążę ją M-¡zamiast, ponieważ M-!to M-shift-1, czego nie może nacisnąć łatwo. Zastanawiam się, czy istnieją konwencje, które zastępuję, kiedy wprowadzam tego rodzaju zmiany

anquegi
źródło
jak M-xdla „wykonaj rozszerzone polecenie, jest to brama do wielu wyrafinowanych rzeczy, które można wykonać interaktywnie w Emacsie; pozwala na uruchomienie dowolnej funkcji Elisp według nazwy”. ma C-ci C-xnie ma takiego opisu?
Pinokio

Odpowiedzi:

21

Jeśli mówisz o wiązaniu kluczy na własny użytek, to jest to reguła: możesz powiązać dowolne klucze, które lubisz.

Jeśli chcesz mieć pewność, że nie powiążesz klucza, który może być już związany, użyj C-clitery, a następnie litery. Wszystkie takie klucze są zastrzeżone dla użytkowników (patrz dalej).


Jeśli mówisz o wiązaniu kluczy w kodzie (np. Bibliotece), który piszesz, do użytku przez innych, reguły (konwencje) są opisane tutaj: węzły Konwencje wiązania kluczy w podręczniku Elisp.

Główne zasady związane z tym, o co pytasz, dotyczą C-c:

  • Nie definiuj C-c LETTERjako klucza w programach Lisp. Sekwencje składające się z C-clitery oraz litery (zarówno wielkiej, jak i małej) są zarezerwowane dla użytkowników; są to jedyne sekwencje zarezerwowane dla użytkowników, więc nie blokuj ich.

  • Sekwencje składające się z C-cnastępujących po nich znaków kontrolnych lub cyfr są zarezerwowane dla głównych trybów.

  • Sekwencje składające się C-cnastępnie {, }, <, >, : lub ;też zarezerwowana dla głównych trybach.

  • Sekwencje składające się z C-cnastępujących po nich znaków interpunkcyjnych ASCII lub symboli są przydzielane dla mniejszych trybów. Używanie ich w trybie głównym nie jest absolutnie zabronione, ale jeśli to zrobisz, powiązanie trybu głównego może być od czasu do czasu zasłaniane przez mniejsze tryby.

Zauważysz, że nie ma konwencji dotyczącej C-x. Jest to jednak nieokreślona konwencja lub po prostu dobra rada / praktyka: jeśli zastąpisz niektóre istniejące, standardowe powiązania Emacsa (tj. Takie, które otrzymujesz od Emacsa jako rozpowszechnione, bez ładowania bibliotek stron trzecich), może to pomylić lub denerwować niektórych użytkowników Twojego kodu.


Możesz przejść do tego dokumentu w Emacsie, w ten sposób:

  1. C-h i, aby otworzyć Info, przeglądarkę dokumentów.
  2. m el TAB RETDla m enu el ISP ( TABdo pełna), lub po prostu kliknij na Elisplink, za pomocą myszy.
  3. key bi TAB, a następnie n TAB RETwykonać Key Binding Conventions.

Możesz też użyć iinstrukcji Elisp, aby uzupełnić wpisy indeksu:

  1. C-h i m el TAB RET.
  2. i key bi TAB, który uzupełnia key bindingi pokazuje dwie możliwości: key bindingi key binding, conventions for. Wpisz, , TABaby zakończyć do drugiego, a następnie RETgo zaakceptować.
Rysował
źródło
Lepiej postępować zgodnie z konwencją, aby wiązać C-ci pisać do poleceń użytkownika. W ten sposób można (prawie) mieć pewność, że nie zastąpi innego wiązania z już zainstalowanego trybu głównego lub któregoś dnia zostanie zainstalowane w przyszłości.
Tobias
1
@Tobias: Nie jestem pewien, co mówisz. Lepsze niż co? Wszystko z kluczowych wiążące konwencje powinny być przestrzegane, w tym nie wiąże C-c+ litera w bibliotece 3rd partii.
Drew
Prawidłowo stwierdziłeś w pierwszych zdaniach odpowiedzi, że nie ma rygorystycznych zasad dotyczących prywatnego użytku. Niemniej jednak zaleca się stosowanie konwencji dotyczących skrótów klawiszowych użytkowników z powodów, które podałem w pierwszym komentarzu. Być może możesz dodać notatkę na ten temat poniżej reguły wszystko idzie w pierwszej części. To wszystko, co chciałem powiedzieć, Drew. Z pozdrowieniami,
Tobias
3
@Tobias: Dodałem to, co myślę, że mówisz; dzięki. Ale nie ma konwencji, których użytkownik powinien przestrzegać w odniesieniu do powiązań klawiszy. W „konwencje skróty klawiszowe użytkownika” , które mówią o konwencje nie są dla użytkowników. Są to konwencje kodowania Lisp, które będą używane przez innych. (Wiem, że o tym wiesz. Po prostu chcę to wyjaśnić, dla każdego, kto to czyta.)
Drew
Co to jest postać kontrolna?
Didier A.,
2

Odpowiedź Drew jest znacznie bardziej dopracowana i szczegółowa.

To jest całkowicie poprawne pytanie! Istnieje konwencja, że ​​sam C-xjest zarezerwowany przez emacsa, podczas gdy C-cprefiks jest używany do skrótów klawiszowych zdefiniowanych przez użytkownika.

Spójrz na to , szczególnie w sekcji „Klucze zastrzeżone”. Jestem prawie pewien, że te informacje są również podane w podręczniku emacsa, ale wydaje mi się, że nie mogę ich teraz znaleźć. Konwencje opisano w tej sekcji podręcznika emacs lisp.

Panagiotis Koutsourakis
źródło
1
C-cnastępnie litera (mała lub duża) bez dalszych modyfikatorów jest zarezerwowana dla użytkowników. Wiele innych sekwencji klawiszy rozpoczynających się od C-cjest zarezerwowanych dla głównych trybów - szczególnie tych, w których drugie naciśnięcie klawisza jest również modyfikowane przez klawisz sterujący.
Tobias
Oczywiście masz rację. @Drew odpowiedział na to pytanie znacznie lepiej.
Panagiotis Koutsourakis
jak M-xdla „wykonaj rozszerzone polecenie, jest to brama do wielu wyrafinowanych rzeczy, które można wykonać interaktywnie w Emacsie; pozwala na uruchomienie dowolnej funkcji Elisp według nazwy”. ma C-ci C-xnie ma takiego opisu?
Pinokio