Emacs w systemie Mac OS X Leopard


104

Jestem użytkownikiem Maca i zdecydowałem się nauczyć Emacsa. Mam przeczytać , że w celu zmniejszenia zmęczenia ręki i poprawy dokładności CTRLi CAPS LOCKklucze powinny zostać zamienione. Jak to zrobić w Leopardzie?

Ponadto w Terminalu muszę użyć ESCklawisza, aby wywołać meta. Czy jest jakiś sposób, aby uzyskać klawisz alt / opcja, aby zamiast tego wywołać meta?

aktualizacja: Chociaż klawisz Ctrl jest teraz znacznie łatwiejszy do naciśnięcia, klawisz meta jest również używany na tyle często, że jego pozycja na moim MacBooku i klawiaturze Apple również zasługuje na uwagę. W rzeczywistości stwierdzam, że klawisz Control jest faktycznie łatwiejszy do uderzenia, więc przemapowałem mój klawisz kontrolny, aby działał jak klucz meta. Czy ktoś ma lepsze / bardziej standardowe rozwiązanie?


4
lepiej przenieść to na apple.stackexchange.com
yetanothercoder

Odpowiedzi:


163

Zamiana CTRL i CAPS LOCK

  1. Przejdź do Preferencji systemowych
  2. Przejdź do panelu preferencji Klawiatura i mysz
  3. Na karcie Klawiatura kliknij Klawisze modyfikujące ...
  4. Zamień akcje na Caps Lock i Control .

tekst alternatywny

Używanie ALT / OPTION jako META

  1. Na pasku menu kliknij Terminal
  2. Kliknij Preferencje ...
  3. Na karcie Ustawienia przejdź do karty Klawiatura
  4. Zaznacz pole oznaczone Użyj opcji jako klucza meta

tekst alternatywny

Otóż ​​to! Powinieneś być na najlepszej drodze do zostania mistrzem Emacsa!


8
„Użyj opcji jako klucza meta” działa, ale powoduje to, że nie mogę wpisać nawiasów klamrowych i pionowych kresek „[] {} |” etc, ponieważ są na Option-7 i opcja teraz ... cóż, mapuje do meta. Jakieś pomysły?
Martin Wickman

1
@wic: Czy te postacie nie mają własnych kluczy?
Kyle Cronin

1
Nie tutaj w Europie. Z norweską klawiaturą są odwzorowane na alt-8 i 9 oraz alt + shift-8 i 9.
sverrejoh

3
Przełącz układ podczas kodowania. Następnie otrzymują własne klucze, tak jak powinni. Jestem Szwedem i nigdy nie widzę potrzeby wpisywania moich rodzimych znaków podczas kodowania.
Według Wiklandera,

1
@hhh Ustawienia dotyczą klawiatury, więc upewnij się, że zostały prawidłowo ustawione dla klawiatury zewnętrznej. Ale tak, po wprowadzeniu zmiany powinno działać wszędzie w systemie OS X.
Kyle Cronin

47

Dla porównania, oto skróty klawiszowe do poruszania się po tekście:

+ - przesuń w lewo o jedno słowo
+ - przesuń w prawo o jedno słowo
+ delete- wstecz usuń jedno słowo
Shift+ + delete- dalej usuń jedno słowo
+ - przejdź o jeden akapit w górę
+ - przejdź o jeden akapit w dół
+ - przejdź na początek bieżącej linii
+ - przejdź na koniec aktualnej linii
Shift+ dowolna z powyższych rozszerza wybór o odpowiednią kwotę

Kliknij, a następnie przeciągnij - zaznacz tekst
Kliknij dwukrotnie, a następnie przeciągnij - zaznacz tekst, zawijanie do końców słów
Trzykrotne kliknięcie, a następnie przeciągnij - zaznacz tekst, zawijanie do końców akapitu

Shift+ Zaznacz tekst myszką - dodaj do zaznaczenia (ciągły)
+ Zaznacz tekst myszką - dodaj do zaznaczenia (nie sąsiadujący)
+ Przeciągnij - zaznacz prostokątny obszar (nie sąsiadujący)
+ + przeciągnij - dodaj prostokątny obszar do zaznaczenia
Przeciągnij zaznaczenie - przesuń tekst
+ przeciągnij zaznaczenie - skopiuj tekst

Ctrl+ A- przejdź na początek bieżącego akapitu
Ctrl+ B- przesuń w lewo o jeden znak
Ctrl+ D- do przodu usuń
Ctrl+ E- przejdź do końca bieżącego akapitu
Ctrl+ F- przejdź w prawo o jeden znak
Ctrl+ H- usuń
Ctrl+ K- usuń pozostałą część bieżącego akapitu
Ctrl+ L- wyśrodkuj okno na bieżącym linia
Ctrl+ N- przejście o jedną linię w dół
Ctrl+ O- wstawienie nowej linii za kursorem
Ctrl+ P- przejście o jedną linię w górę
Ctrl+ T- transpozycja (zamiana) dwóch otaczających znaków
Ctrl+ V- przejście na koniec, a następnie o jeden znak w lewo
Ctrl+ Y- wklejanie tekstu wcześniej usuniętego za pomocąCtrl - K

Dodaj Optiondo Ctrl+ Flub Ctrl+, Baby przenieść słowo zamiast znaku na raz.


Innym dobrym źródłem jest ta strona hcs.harvard.edu/~jrus/Site/System%20Bindings.html
Gourneau

3
Ch nie usuwa w bash iw polach tekstowych Mac OS X Cocoa, ale pomaga w emacsie.
asmeurer

11

Druga odpowiedź była bardzo kompletna, ale dodatkowo wspomniałbym, że po prostu ustawiłem klawisz Caps Lock na drugi klawisz kontrolny zamiast ich zamieniać.

Zauważysz również, że znaczna większość pól wprowadzania tekstu w Mac OS X już akceptuje naciśnięcia klawiszy emacsa (^ A początek wiersza, ^ E koniec wiersza, ^ P, ^ N, ^ K, ^ Y itd.)

powodzenia


6
Możesz być na czymś - nie pamiętam, kiedy ostatnio korzystałem z Caps Locka.
Kyle Cronin

11

Bardzo podoba mi się odpowiedź udzielona przez Kyle'a Cronina, ale chcę dodać jedną rzecz - upewnij się, że wybrałeś odpowiednią klawiaturę, aby to zadziałało. Jeśli masz zewnętrzną klawiaturę podłączoną do laptopa, istnieje dodatkowe rozwijane okno i będziesz musiał to zrobić dla obu klawiatur (lub przynajmniej dla klawiatury zewnętrznej). Poniższy zrzut ekranu przedstawia okno dialogowe „Wybierz klawiaturę” - wybrałem „Wspólną klawiaturę Maca”, co jest sposobem na określenie zewnętrznej klawiatury GoldTouch w MacBooku - domyślnie jest to klawiatura wbudowana.
Zrzut ekranu przedstawiający okno dialogowe „Wybierz klawiaturę”

Kiedy już to zrozumiałem - to działa świetnie!


9

Jeśli używasz emacsa przez połączenie ssh lub przez maszynę, która nie znajduje się na twoim lokalnym komputerze, przyciski page up / page down przewijają bufor terminala - z mojego doświadczenia nie są zbyt pomocne.

Możesz ustawić przyciski strony w dół i w górę, aby wysyłać odpowiednie polecenia do emacsa. W emacsie możesz przewijać bufor emacsa w następujący sposób:

  • Strona w górę: Ctl-v
  • Page Down: Esc-v

Tak więc, aby terminal wysłał te polecenia do emacsa, postępuj zgodnie z instrukcjami powyżej, aby zmienić klawisze Alt dla Meta. Jednak zamiast ustawiać opcję „użyj opcji jako meta”, znajdź opcje „page down” i „page up”.

Strona w dół

Kliknij dwukrotnie opcję „page down”, aby ją edytować. Zmień akcję na „wyślij ciąg do powłoki” i wpisz \ 026 jako ciąg. Zapisz to.

Strona w górę

Kliknij dwukrotnie przycisk „page up”, aby go edytować. Zmień akcję na „wyślij ciąg do powłoki” i wpisz \ 033v jako ciąg. Zapisz to.


7

Nie jestem pewien, czy jesteś całkowicie żonaty z używaniem Emacsa z terminala, ale inną opcją jest użycie Carbon Emacs (mój ulubiony) i Aquamacs (bardzo podobny do Maca). Carbon Emacs używa klawisza Command dla meta, jest to miłe, ponieważ możesz wykonywać polecenia Control-Meta po prostu przytrzymując klawisz Control i Command zamiast najpierw uderzać klawisz Esc, a następnie sekwencję klawiszy kontrolnych.

Ponadto, jeśli jesteś poważnym użytkownikiem Emacsa, zdecydowanie zalecam zakup klawiatury przystosowanej do programowania (czyli takiej, która jest całkowicie przeprogramowalna sama). Używam Kinesis, to trochę pieniędzy, ale są niezwykle wytrzymałe i całkiem ładne.


4

Osobiście mam konfigurację Caps Lock, aby zachowywać się jak polecenie w preferencjach systemowych, a następnie na moim pliku init.el emacsa:

(setq mac-command-modifier 'ctrl)

a to pozwala mi używać caps locka jako polecenia w większości aplikacji osx i jako kontrolki w emacsie. działa dla mnie wystarczająco dobrze.


4

Twoja radość dopiero się zaczyna. Inne sztuczki obejmują:

  • Użyj lewego i prawego klawisza Shift, aby również (i) do szybkiego pisania.
  • Zmień przypisanie klawisza fn lub innego klawisza, aby był „super”.
  • Spraw, aby Caps Lock był kontrolą, ale tylko za pomocą innego klucza. Sam w sobie jest ucieczką.

Przeczytaj doskonały artykuł pod adresem http://stevelosh.com/blog/2012/10/a-modern-space-cadet/, aby uzyskać dużo więcej informacji.


to jest niesamowite! dzięki! Nawet nie pomyślałem o zrobieniu tej warunkowej logiki dla przycisku Capslock. tak chory!
wle8300

3

Ten wątek został uruchomiony 5 lat temu i nie ma wzmianki ns-win.elani kompilacji --with-ns. Oto wszystkie skróty klawiszowe dostępne (po wyjęciu z pudełka) w Emacs Trunk od października 2013. I oczywiście możesz tworzyć własne. Osobiście mam jeden init.elze wszystkimi moimi przypisaniami klawiszy, który może być używany w systemie Windows XP przez Parallels na OSX, a także natywnie z OSX. Ponieważ użytkownik może definiować własne skróty klawiaturowe, nie widzę potrzeby zmiany przypisania klawiatury w preferencjach systemowych (z klawiaturą Apple US), chyba żeużywając klawiatury, która nie zawiera klawisza Command. Ale czy wyrzuciłbym mój zapas klawiatur IBM Clicky z wbudowanym trackpointem? Oczywiście nie. :) Zabieram ze sobą klawiatury IBM Clicky do następnego życia. Jakiekolwiek nadwyrężenie dłoni jest najprawdopodobniej spowodowane niewłaściwą pozycją nadgarstka / ramienia / łokcia, a nie uderzeniem w kontrolę w porównaniu z blokadą czapek. Dokładność jest zwiększana poprzez praktykę i z pomocą szefa, który patrzy przez ramię, aby zobaczyć, jak sobie radzisz - tj. Niewielką presję, aby być bardziej produktywnym :)

(define-key global-map [?\s-,] 'customize)
(define-key global-map [?\s-'] 'next-multiframe-window)
(define-key global-map [?\s-`] 'other-frame)
(define-key global-map [?\s-~] 'ns-prev-frame)
(define-key global-map [?\s--] 'center-line)
(define-key global-map [?\s-:] 'ispell)
(define-key global-map [?\s-?] 'info)
(define-key global-map [?\s-^] 'kill-some-buffers)
(define-key global-map [?\s-&] 'kill-this-buffer)
(define-key global-map [?\s-C] 'ns-popup-color-panel)
(define-key global-map [?\s-D] 'dired)
(define-key global-map [?\s-E] 'edit-abbrevs)
(define-key global-map [?\s-L] 'shell-command)
(define-key global-map [?\s-M] 'manual-entry)
(define-key global-map [?\s-S] 'ns-write-file-using-panel)
(define-key global-map [?\s-a] 'mark-whole-buffer)
(define-key global-map [?\s-c] 'ns-copy-including-secondary)
(define-key global-map [?\s-d] 'isearch-repeat-backward)
(define-key global-map [?\s-e] 'isearch-yank-kill)
(define-key global-map [?\s-f] 'isearch-forward)
(define-key global-map [?\s-g] 'isearch-repeat-forward)
(define-key global-map [?\s-h] 'ns-do-hide-emacs)
(define-key global-map [?\s-H] 'ns-do-hide-others)
(define-key global-map [?\s-j] 'exchange-point-and-mark)
(define-key global-map [?\s-k] 'kill-this-buffer)
(define-key global-map [?\s-l] 'goto-line)
(define-key global-map [?\s-m] 'iconify-frame)
(define-key global-map [?\s-n] 'make-frame)
(define-key global-map [?\s-o] 'ns-open-file-using-panel)
(define-key global-map [?\s-p] 'ns-print-buffer)
(define-key global-map [?\s-q] 'save-buffers-kill-emacs)
(define-key global-map [?\s-s] 'save-buffer)
(define-key global-map [?\s-t] 'ns-popup-font-panel)
(define-key global-map [?\s-u] 'revert-buffer)
(define-key global-map [?\s-v] 'yank)
(define-key global-map [?\s-w] 'delete-frame)
(define-key global-map [?\s-x] 'kill-region)
(define-key global-map [?\s-y] 'ns-paste-secondary)
(define-key global-map [?\s-z] 'undo)
(define-key global-map [?\s-|] 'shell-command-on-region)
(define-key global-map [s-kp-bar] 'shell-command-on-region)
;; (as in Terminal.app)
(define-key global-map [s-right] 'ns-next-frame)
(define-key global-map [s-left] 'ns-prev-frame)

(define-key global-map [home] 'beginning-of-buffer)
(define-key global-map [end] 'end-of-buffer)
(define-key global-map [kp-home] 'beginning-of-buffer)
(define-key global-map [kp-end] 'end-of-buffer)
(define-key global-map [kp-prior] 'scroll-down-command)
(define-key global-map [kp-next] 'scroll-up-command)

;; Allow shift-clicks to work similarly to under Nextstep.
(define-key global-map [S-mouse-1] 'mouse-save-then-kill)
(global-unset-key [S-down-mouse-1])


0

Utworzyłem dość obszerny zestaw opraw tutaj do użytku na zewnątrz Terminalu.

Osobiście nie mogę używać klawiatury laptopa Mac ze względu na brak odpowiedniego klawisza sterującego.

Zamiast tego używam Microsoft Natural Ergonomic Keyboard 4000 od ponad 7 lat: ma naprawdę grube, dobrze rozmieszczone klawisze Ctrl i Alt, a po pobraniu sterowników klawisze „Start” i „Aplikacja” są w trywialny sposób mapowane na Maca Klawisz Cmd, który jest również gruby i łatwo wciskany.

Aby uniknąć problemów związanych z ergonomią emacsa, nauczyłem się używać Ctrl, Alt i Cmd w ten sam sposób, w jaki używamy Shift - wciskając je ręką przeciwną do tej, która wpisuje właściwy klawisz. (Oznacza to, że zostawiam Caps Lock bez zmian.)


0

Ustawiłem Caps Lock, aby kontrolować w preferencjach systemowych i mam następujące elementy w moim init.el, aby ustawić polecenie na meta i opcję na super:

(custom-set-variables
 '(ns-alternate-modifier (quote super))
 '(ns-command-modifier (quote meta)))

0

Chciałbym polecić 2 programy Seil i Karabiner . Po prostu instalując Seil i postępując zgodnie z instrukcjami w oprogramowaniu, powinieneś być w stanie osiągnąć to, co chcesz. Z mojego doświadczenia wynika, że ​​Karabiner jest potężniejszy. Mam japońską klawiaturę, której układ różni się od zwykłych. Mam fragment kodu, który zmienia mapowanie dwóch dodatkowych klawiszy na mojej klawiaturze na F18 i F19 do innych celów. Możesz użyć tej samej składni do edycji pliku „private.xml”, aby zrobić więcej rzeczy.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.