Jestem przyzwyczajony do iTerm2 (lub Terminal.app w tym przypadku) w OS X. Ale chcę przejść do korzystania z tmux (lub ekranu, ale problem jest podobny do obu aplikacji).
Więc moim pomysłem jest posiadanie jednej zakładki iTerm z sesją tmux otwartą z wieloma zakładkami. Aby dokonać przejścia, mam podstawową funkcję, którą muszę skonfigurować na tmux: przełącz kartę „n” za pomocą cmd + n (jak Firefox, Chrome, sam iTerm2 itp.)
Jednak nie mogę znaleźć sposobu mapowania klawisza cmd na klawiaturze Mac. Najpierw próbowałem zaimplementować cmd jako klucz prefiksu, ale bez powodzenia. Próbowałem ustawienie
set-option -g prefix M-a (hoping for Meta-a)
set-option -g prefix ^a (hoping for ^ to work)
ale nic nie działa. czy to możliwe? Naprawdę nie muszę wiązać prefiksu z cmd, ale chcę mieć możliwość zmiany zakładek tmux za pomocą cmd + n.
Dziękuję Ci
Odpowiedzi:
Chcesz wywołać sekwencję naciśnięć klawiszy (najpierw
Ctrl-b
, a następnie n od 0 do 9).Najlepiej jest użyć do tego narzędzia skrótu klawiaturowego, takiego jak Butler lub Keyboard Maestro .
Za pomocą Butlera :
Wybierz + »Inteligentny element» Klawisze , skonfiguruj skrót
Cmd-1
. NaciśnijCtrl-B
, a następnie1
dla klawiszy . Skonfiguruj, aby działał tylko w Terminalu (lub iTerm). Ostrzeże Cię, że innym aplikacjom może się to nie podobać, ale już o tym wiesz.Korzystanie z Keyboard Maestro :
Utwórz nową grupę po lewej stronie, która jest dostępna tylko w Terminalu (lub iTerm).
Dodaj nowy element uruchamiany przez skrót klawiszowy (
Cmd-1
) i dodaj dwa naciśnięcia klawiszy do jego akcji:Ctrl-B
i1
.Możesz także rzucić okiem na ten temat - jednak nie używa
Command
i nie działał dla mnie przy użyciu terminalu.Z dokumentacji tmux :
Nie obsługują trzeciego klawisza modyfikującego.
źródło
W iTerm2 można mapować skróty na kody szesnastkowe wysyłane do terminala. Idź do Preferencje iTerm2 -> Klucze. W Globalnych klawiszach skrótów kliknij + i dodaj wpisz żądany skrót, taki jak cmd + 1, który zostanie przechwycony. Następnie wybierz „Wyślij kod szesnastkowy”. W wyświetlonym polu wpisz kody szesnastkowe, które chcesz wysłać do tmux, oddzielając je spacjami. Ctrl-B to 0x02, więc dla „Ctrl-B 1” wpisz „0x02 0x31”. Zobacz tutaj więcej kodów szesnastkowych: http://www.nthelp.com/ascii.htm
Odwzorowałem Cmd na h, j, k, l do poruszania się między panelami tmux, a Cmd na% i "do tworzenia podziałów. Prawdopodobnie zrobię coś podobnego, aby przechodzić między podziałami vim za pomocą jednego klawisza sterującego.
źródło
Za pomocą Terminal.app można tworzyć specjalne skróty. Właśnie dowiedziałem się innego dnia, ale mogło to być możliwe przed lwem.
Przejdź do Preferencje> Ustawienia i kliknij kartę „Klawiatura”. Teraz musisz dodać nowy skrót klawiaturowy, klikając ikonę plusa pod polem. Teraz chcesz ustawić kombinację klawiszy, która „Wysyła ciąg znaków do powłoki”.
Przykład: Powiedzmy, że chcę ustawić mapowanie M-LeftArrow na
prefix-p
(poprzednie okno).Teraz po prostu wpisz w
prefix-p
polu wprowadzania, gdzieprefix
jest wszystko, co ustawiłeś dla tmux (używam cntrl-a, aby wyświetlało się okno\001p
). Pamiętaj, że jeśli popełnisz błąd, zamiast faktycznego usuwania znaków zostaną wstawione znaki, więc naciśnij przycisk „Usuń jeden znak”, aby przejść wstecz, na wypadek, gdybyś się bałaganił.Znaki specjalne, które ustawiłem, aby ułatwić życie:
Możesz także modyfikować cntrl-cokolwiek i shift-cokolwiek, ale pamiętaj, że mogą one zakłócać działanie twojego $ EDITOR lub innych programów, więc uważaj na to, jakie funkcje specjalne mogą stać się bezużyteczne.
Zauważ też, że nie mogłem wymyślić, jak powielić tę funkcjonalność w iTerm2.
źródło
Możesz także rozważyć natywną (ale bardzo eksperymentalną) integrację, którą iTerm2 oferuje z tmux: http://code.google.com/p/iterm2/wiki/TmuxIntegration
W ten sposób, gdy naciśniesz Cmd-D, aby podzielić ekran, iTerm2 podzieli zakładkę za ciebie. Jest to świetne, ponieważ podział jest rodzimy, więc możesz przeciągnąć krawędź na środku, aby ponownie dopasować szerokości, lub możesz wybrać panel, klikając. To samo dotyczy nowych kart / okien (ale skróty są nieco inne - inaczej nie byłoby możliwości dodania kart innych niż tmux).
I podobnie jak tmux, jeśli odłączysz się i ponownie połączysz, wszystko zostanie dla ciebie zapisane.
Istnieją jednak dwa zastrzeżenia: * jest to dla mnie bardzo eksperymentalna funkcja i bardzo niestabilna. * musisz sam zbudować tmux (korzystając z archiwum gdzieś na powyższym linku).
-Chris
źródło
cmd+D
podanymi w twoim linku, ale dzieli panel iTerm2, a nie tmux.tmux -CC
.Możesz także spojrzeć na ten post na blogu, który zawiera bardzo szczegółowe wyjaśnienia dotyczące integracji tmux / iterm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/
źródło