Sprawienie, aby iTerm tłumaczył „meta-klucz” w taki sam sposób, jak w innych systemach operacyjnych

179

W powłoce bash z przypisywaniem klawiszy emacs można użyć kombinacji klawiszy, takich jak Mf, Mb, aby przesunąć odpowiednio o jedno słowo do przodu lub do tyłu w zachęcie powłoki. Zwykle klucz meta jest mapowany na klawisz Alt w systemach Windows i Linux. Jednak w iTerm nie mogłem znaleźć sposobu na zmapowanie tego klucza meta do klawisza Option lub Command na moim MacBooku Pro.

Wygląda na to, że w OS X klucz meta jest domyślnie przypisany do klawisza ESC. Możesz więc używać ESC-f, ESC-b na iTerm. Jednak użycie klawisza ESC jest najwyraźniej niepraktyczne. Ponadto iTerm ma opcję, która pozwala na mapowanie modyfikatorów dla klucza meta (Zakładki> Profile> Profile klawiatury> Globalny> Klucz opcji jako ...), to ustawienie wydaje się w ogóle nie działać.

Dlatego jeśli ktoś wie jakie jest rozwiązanie tego problemu to proszę o informację.

Zaktualizowałem do najnowszej wersji 0.9.6.1012 i to zachowanie nadal się utrzymuje.

Edycja: Pewne wyjaśnienie mojego pytania. Wiązanie klawiszy, o którym mówię, dotyczy powłoki bash, a nie emacsa. Tak się po prostu zdarza, że ​​domyślnie powłoka bash również używa tego samego wiązania klawiszy co emacs.

ejel
źródło
Po dłuższej przerwie w tym problemie i nie mogę znaleźć rozwiązania. Poddałem się i przeszedłem na Terminal.
ejel
2
nie zapominaj, że iterm2 już istnieje i wszystko jest w porządku =)
holms,

Odpowiedzi:

207

Cmd+., Profiles, KeysI wybierz Left option Key acts as: +Esc.

U mnie działa w emacsie, chociaż nie jestem pewien, czy będzie to miało jakieś inne niepożądane skutki.

sorin
źródło
Spróbowałem klucza opcji jako ... ze wszystkimi opcjami, ale żaden z nich nie działa dla mnie w powłoce bash. Wyświetla tylko „?” za każdym razem, gdy naciskam kombinację klawiszy meta.
ejel
2
Wygląda na to, że Twoim językiem wprowadzania tekstu musi być amerykański, aby opcja + ESC działała. + ESC nie działało dla mnie, gdy wybrano metodę wprowadzania japońskiego / romaji, ale zaczęło działać, gdy zmieniłem język wprowadzania na amerykański
Dominic Cooney
2
Preferences, Profile, Keys i wybierz opcję Left Klawisz działa jak: + Esc. Wtedy będziesz mieć lewy klawisz opcji ORAZ klawisz Esc jako klucz meta. Tak stało się w moim przypadku.
cgl
Wydaje się, że w przypadku iTerm 2 jest to zalecana opcja.
ejel
4
Na mojej zewnętrznej klawiaturze musiałem ustawić lewy i prawy klawisz opcji do użycia Esc+, mimo że użyłem lewego klawisza opcji, nadal wyświetlałby dziwne znaki. Może się tak zdarzyć, ponieważ używam opcji Modyfikatory klawiatury w ustawieniach klawiatury komputera Mac, aby zmienić klawisze.
grego
130

Przejdź do Zakładki> Zarządzaj profilami . Następnie wybierz Profile klawiatury> Globalne i wybierz Klucz opcji jako Meta . To działa dla mnie w wersji 0.9.6.1201.

Dag Høidahl
źródło
2
Musiałem zmienić wpis xterm (OS X) zamiast globalnego, ale teraz działa.
Jason Axelson
Nie wiem, dlaczego na moim komputerze ustawienie jest zepsute w wersji 0.9.6.1201 i kilku innych kompilacjach, które wypróbowałem. Działa jednak z najnowszą wersją 0.9.6 i 0.10. Więc teraz nie powinno to stanowić problemu.
ejel
11
w iTerm2 działało to dopiero po ponownym zdefiniowaniu klawiszy skrótu profilu dla alt+ ->i alt+, <-aby odpowiednio wysłać sekwencję ucieczki + f/ b.
amirnissim
Musiałem otworzyć nową sesję iterm, aby
zaczęła działać
@SridharRatnakumar Pracuje też dla iTerm
Krzysztof Wende
31

W pasku menu Iterm2 => Preferencje => Profile wybierz zakładkę klucze i wybierz

lewy klawisz Option działa jak + Esc

wprowadź opis obrazu tutaj

pracował dla mnie również w irssi.

anquegi
źródło
Świetnie, działa to również w połączeniu iTerm2 + tmux
TheJavaGuy-Ivan Milosavljević
8

Nie mogłem też uruchomić klawisza Alt, ale istnieje obejście, które sprawia, że ​​działa przynajmniej do nawigacji po słowach za pomocą klawiszy kursora:

Przejdź do następnego lub poprzedniego słowa w iTerm za pomocą klawiszy Alt / Opcja + Strzałka w lewo lub w prawo

nyenyec
źródło
2
Dla backward-delete-word(⎇-DEL) wyślij kod szesnastkowy 0x17, do przeskoczenia na początek wejścia (⌘- ←) wysyłania 0x01i do przeskoczenia na koniec (⌘- →) wysyłania 0x05.
Lenar Hoyt
5

Używam iTerm2 , a dla mnie ta odpowiedź po prostu częściowo rozwiązała mój problem:

Cmd+ ,=> Profile => Klawisze i wybierz opcję Lewo Klawisz działa jak: + Esc .

wprowadź opis obrazu tutaj

Oprócz tego musiałem przejść do Cmd+ ,=> Profiles => Keys i na liście Key Mappings znaleźć obie kombinacje klawiszy s: wprowadź opis obrazu tutaji wprowadź opis obrazu tutajdwukrotnie je kliknąć i zmienić ich skróty na następujące:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj

* Upewnij się, że wybrano akcję Wyślij sekwencję ucieczki .

M. Demianchuk
źródło
To jest naprawdę pomocne. Wielkie dzięki stary!
LeOn - Han Li
4

Idzie tutaj zmartwychwstanie zombie, ale ze względu na potomstwo -

Ten post sprawił, że działał tak, jak sobie tego życzysz, dla Mb i Mf, jednocześnie zachowując ustawienie „Option Key as Meta”, abyś nie poświęcał modyfikatora (osobiście mam mapowania Vima używające meta).

Podsumowując, w swoim globalnym profilu klawiatury dodaj dwa nowe mapowania z ustawieniami:

  1. Klucz jako kod szesnastkowy, wartość 62 dla b, 66 dla f ( man ascii)
  2. Modyfikator jako opcja
  3. Akcja jako sekwencja ucieczki wysłania, wartość b lub f

Jedyną rzeczą, której wciąż brakuje mi w Terminal.app, jest Opt-Backspaceusuwanie słowami. Istnieją inne obejścia tego problemu, ale próbuję tylko nauczyć się go używać Ctrl-w.

ches
źródło
Może to być nowa funkcja od czasu tej odpowiedzi, ale możesz zmapować globalny skrót klawiszowy do wysłania Ctrl-wpo Opt-Backspacenaciśnięciu.
Steve Buzonas
4

W iTerm2 jest łatwiej. Przejdź do preferencji-> zakładka-> klawiatura i wybierz opcję Wysyła + ESC. W iTerm2 możesz osobno skonfigurować lewy i prawy klawisz opcji, więc pamiętaj, aby zmienić oba, jeśli tego chcesz. Link do iTerm2: http://sites.google.com/site/iterm2home/

Jerzy
źródło
2

Przejdź do Zakładki> Zarządzaj profilami. Następnie wybierz Profile klawiatury> Globalne i wybierz Klawisz opcji jako + ESC.

Działa w iTerm Build 0.9.5.0611 i Build 0.9.6.20090415


źródło
Hmm. Wydaje się, że ustawienie jest zepsute na moim komputerze z tymi dwiema wersjami. Jednak najnowsze wersje 0.9.6.20090928 i 0.10 działają zgodnie z oczekiwaniami.
ejel
2

Znalazłem też rozwiązanie na stackoverflow, po prostu przejdź do profilu klawiatury i w "Global" change "klawisz Option na" + ESC

to działa dla mnie idealnie =) przy okazji istnieje kilka poprawek iterm, zajrzyj tutaj: http://www.emacswiki.org/emacs/EmacsForMacOS

Holms
źródło
0

Spróbuj „wyeksportować LANG = C”. Nie jestem ekspertem od emacsa, ale odkryłem, że to pozwala emacsowi na OS X rozpoznać klucz Option jako klucz Meta w iTerm,


źródło
0

Nie wiem o iTerm, ale możesz to zrobić w Terminalu. Instrukcje można znaleźć tutaj:

Emacs na skrótach klawiszowych Mac OS X Leopard

Kyle Cronin
źródło
Dziękuję Ci. Wiem, że mogę to zrobić w Terminalu. Chcę tylko osiągnąć ten sam rezultat w iTermie. Nawiasem mówiąc, to, czego szukam, to przypisywanie klawiszy w powłoce bash, a nie w emacsie. Po prostu zdarza się, że powłoka bash również używa przypisywania klawiszy emacsa.
ejel
0

Oto, co mi zadziałało: Zakładki> Zarządzaj profilami> Profile klawiatury> Global / xterm> Klawisz opcji jako + Esc. Dzięki temu mogę użyć Option + Enter w Midnight Commander, a aktualnie wybrana nazwa pliku / katalogu pojawia się w ciągu polecenia, tak jak powinna. Klucz opcji, ponieważ Meta nie działa dla mnie. Moja wersja iTerm to 0,10.

Michaił w YugaByte
źródło