Jak powiązać klawisz polecenia w Zsh?

8

Czy można powiązać klawisz Command z Mac OS X w Zsh? Nie mogę znaleźć żadnych informacji na ten temat.

kierzniak
źródło

Odpowiedzi:

9

Jeśli korzystasz z iTerm2, możesz. Najpierw skonfiguruj klawisze skrótów, aby wysyłać niestandardowe kody:

A następnie możesz je powiązać, umieszczając w swoim .zshrc:

bindkey '^[begin' beginning-of-line
bindkey '^[end' end-of-line
mik01aj
źródło
Ponieważ rozwiązanie jest podzielone na ustawienia iTerm i .zshrc, czy nie mogłoby to powodować problemów, jeśli użyjesz klawisza w innym miejscu niż zsh? (Byłoby miło, gdyby iTerm zezwolił, aby niektóre ustawienia były aktywne tylko w określonych kontekstach - na przykład, jeśli używasz określonej powłoki.)
iconoclast
Cokolwiek używam, zshzawsze jest uruchomiony jako pierwszy, więc mapowanie jest tam (tylko sprawdzone: Miałem nanowewnątrz shwewnątrz moich zshi klawiszy działa bez zarzutu).
mik01aj
2

Tak, ale nie jest to tak proste, jak można się spodziewać.

Po pierwsze, Mac OS nie przekazuje sekwencji kontrolnej do aplikacji po naciśnięciu kombinacji klawiszy poleceń. Zamiast tego aplikacje oferują funkcje dla systemu operacyjnego, które można uruchamiać za pośrednictwem Apple Events. Wiązanie kluczowych kombinacji z konkretnym zdarzeniem Apple występuje na poziomie systemu operacyjnego.

Najlepsze rozwiązanie, jakie mogę wymyślić, byłoby zgodne z następującymi wytycznymi:

  1. Napisz kod AppleScript, który robi wszystko, co chcesz; użyj do shell scriptpolecenia, aby wykonać polecenia powłoki - lub napisz skrypt powłoki, jeśli jest to preferowane. Tak czy inaczej, to podejście otworzy nowe okno terminala dla każdego uruchomienia polecenia.

  2. Alternatywnie, wymyśl sekwencję naciśnięć klawiszy, która wygeneruje pożądane zachowanie (np. Powinieneś być w stanie wpisać „top”, aby uruchomić top w bieżącym oknie powłoki).

  3. Użyj Automatora, aby utworzyć usługę, która uruchamia AppleScript (lub skrypt powłoki lub cokolwiek innego) lub wpisuje naciśnięcia klawiszy. Przypisz tę usługę do terminalu i przypisz skrót klawiaturowy. Ten przewodnik przeprowadzi Cię przez ten proces: http://www.makeuseof.com/tag/how-to-create-your-own-services-menus-mac/

Podejście 1 jest niedoskonałe, ponieważ nie można go uruchomić w bieżącej sesji powłoki okna. Podejście 2 jest niedoskonałe, ponieważ daje niepożądane wyniki, gdy aktywna sesja powłoki działa w trybie innym niż zsh.

Marshall Eubanks
źródło