Ponowne mapowanie kluczy w iterm2

15

Próbuję zmienić mapowanie niektórych domyślnych kombinacji klawiszy w iTerm2 i chciałbym zrozumieć, co się dzieje, gdy powiązam klucze z „Wyślij kody szesnastkowe”.

Poprzedni post pomógł mi zacząć od zmiany mapowania kombinacji klawiszy ctrl-a i ctrl-e odpowiednio na cmd-left i cmd-right, ale chciałbym również mapować inne kombinacje klawiszy. ( Link do poprzedniego postu Stackoverflow ).

Mam niejasne zrozumienie, że w grę wchodzą kody szesnastkowe, ale jestem w punkcie, w którym nie mogę dowiedzieć się, gdzie iść dalej, aby zrozumieć, co się dzieje i co robić.

Społeczność
źródło
Nie ma to nic wspólnego z bash. Usunięto tag.

Odpowiedzi:

16

Te kody szesnastkowe to tylko sekwencje bajtów. Na przykład mapowanie kombinacji klawiszy 0x66 0x6f 0x6f, aby wstawić foo. 0xc3 0xa4wstawiłby ä, jeśli używasz UTF-8. 0x1b 0x1b 0x5b 0x43środki escape escape [ C.

Niektóre sekwencje bajtów, takie jak sekwencje specjalne ANSI, a nawet pojedyncze bajty, takie jak znaki sterujące ASCII, mają specjalne znaczenie w terminalach.

Aby ⌘ ← i ⌘ → przejść do początku i końca linii, możesz przypisać je do 0x01 (^ A w notacji doczepionej) i 0x05 (^ E w notacji doczepionej):

  • ⌘ ←: Wyślij kody szesnastkowe: 0x01
  • ⌘ →: Wyślij kody szesnastkowe: 0x05

Możesz ⌥⌦ usunąć słowo do przodu, przypisując je do \ed:

  • ⌥⌦: Wyślij ^ [d

Zmiana ⌥ ← i ⌥ → do \ebi \efpreferencji iTerm byłby też zmienić je w programach, które nie obsługują readline lub skróty klawiszowe emacs stylu. Inną opcją jest dodanie tego do ~ / .inputrc :

"\e\e[D": backward-word
"\e\e[C": forward-word

Możesz uruchamiać readi naciskać kombinacje klawiszy, aby zobaczyć, które znaki wstawiają. Na przykład ⌥ ← ^[^[[Ddomyślnie wstawia , gdzie ^[w notacji karetki jest znak ucieczki .

Zobacz także http://code.google.com/p/iterm2/wiki/Keybindings .

Lri
źródło
Dzięki. Natrafiam na tę odpowiedź, szukając rozwiązania mojego pytania tutaj . Jak mogę wyszukać kod szesnastkowy dla określonej kombinacji klawiszy? (w moim przypadku jestem zainteresowany w kombinacji Ctrl+Alt+<char>z <char>bycia i, j, k, li u)
Amelio Vazquez-Reina
6

Sugeruję zainstalowanie Kodów Kluczowych (0 USD) od Many Tricks i samemu znaleźć skróty.

Na przykład, jeśli chcesz ponownie przypisać domyślny skrót do (do przodu) usuwania znaku - którym jest Ctrl-D ( ⌃D) - tak prosty, jak naciśnięcie klawisza usuwania do przodu ( ),…

  1. Otwórz aplikację i naciśnij Ctrl-D

    Przykład kodów kluczowych

  2. Z powrotem w iTerm 2, dodaj skrót Unicode w iTerm> Preferencje> Klucze

    iTerm Wyślij kody szesnastkowe

Uwaga: Nie kopiuj i nie wklejaj, po prostu wpisz Unicode bez spacji.

Patrick
źródło
2

Najlepszym sposobem, jaki znalazłem, było wysłanie kodów (jak opisano w @pattulus lub użycie powiązań klawiszy vim).

Uwaga na temat kodów kluczy: W rzeczywistości nie można go uruchomić, wysyłając ciąg znaków Unicode, jak opisano powyżej, musisz wysłać zarówno modyfikator, jak i klucz do gethera w przypadku Control+ D, musisz wysłać to jako kod: 0x840101 0x4gdzie 0x840101jest modyfikator klawisza sterującego i można je uzyskać za pomocą kodu klucza .

Uwaga dotycząca wysyłania w sekwencji vim : Jak opisano w dokumentacji iTerm2 , możesz wysłać kod klucza w formacie powiązań vim, na przykład w \<C-d>przypadku wysyłania Control+ D(uwaga \jest ważna).

Osobiście wolę wiązanie kluczy vim, ponieważ jest bardziej czytelne, a później zrozumiesz, co zrobiłeś.

ExistMe
źródło
1

Sprawdź karabinek .

W tym narzędziu możesz tworzyć kluczowe niestandardowe odwzorowania specyficzne dla aplikacji. Zawiera kilka narzędzi, które mogą w tym pomóc.

bdecaf
źródło