Zalogowałem się na jednym z serwerów dostawcy hostingu i zauważyłem, że klawisze ALT + w lewo i ALT + w prawo poruszają się między słowami w wierszu poleceń na ekranie GNU.
Jakie powiązania klawiszy muszę skonfigurować i skąd wziąć to zachowanie do mojego lokalnego OS X zsh działającego w iTerm2?
keyboard-shortcuts
zsh
iterm2
key-binding
Mikko Ohtamaa
źródło
źródło
FOO=BAR
to jedno słowo do zsh i 2 słowa do bash. Podobnie, jeśli ustawisz kursor na końcufoo --bar
i zrobisz alt + backspace, w bash będziesz miał,foo --
aw zsh będziesz miałfoo
. Zsh dodaje wiele funkcji do bash, ale ma również wiele szalonych ustawień domyślnych do zastąpienia.Odpowiedzi:
Znalazłem rozwiązanie tutaj: https://coderwall.com/p/h6yfda . Skopiuje najważniejsze części, na wypadek, gdyby link przestał działać.
źródło
Szukasz słów kluczowych
backward-word
iforward-word
. Więc jeśli korzystasz z powłoki, w której skróty klawiszowe nie działają, spróbujbindkey -L | grep backward-word
sprawdzić, czy są nawet skonfigurowane. Więcej informacji na ten temat znajduje się w zshzle (1) .Możesz ręcznie ustawić przypisanie klawiszy, wpisując coś takiego:
Miałem też pewne problemy z przypisywaniem klawiszy i prawie zawsze problem polegał na tym, że klawisz Option / Alt wysyłał coś innego niż oczekiwany Meta / Escape.
źródło
emacs-forward-word
iemacs-backward-word
. Różnica polega na tym, że przeskakujesz do przodu do końca słowa i do tyłu do początku słowa zamiast skakać zawsze na początku słowa.Nie mogę mówić w imieniu iTerm, ale są to skróty klawiszowe, których użyłem, aby rozwiązać ten problem w GNOME Terminal na Fedorze 19 z systemem ZSH 5.0.7 z Oh-my-zsh:
gdzie
\e
== Sekwencja klawiszy Escape (zgodnie z dokumentacją w sekcji 4.1.1 )i
[
==O
(wielkie litery O; jak udokumentowano w sekcji 4.2.1 ), w niektórych przypadkach. Na przykład w ramachtmux
tej substytucji jest dla mnie konieczna, jednak beztmux
niej nie jest wymagana żadna zamiana i[
==[
Kluczowe kody sekwencji można uzyskać,
cat
naciskając i naciskając żądaną sekwencję. Na przykład wyniki prasowania<Alt+Right>
należy interpretować w następujący sposób:^[
==\e
== Sekwencja klawiszy Escape[
==[
beztmux
OR[
==O
(wielkie litery o) ztmux
1;3
== Nie jestem tego pewien, ale logicznie powinno to znaczyć<Alt>
C
== Klawisz strzałki w prawoNastępnie ta sekwencja jest podana
bindkey
w~/.zshrc
pliku jako trwały jako pierwszy argument i jest związana , co oznacza, że naciśnięcie klawisza w argumencie pierwszym spowoduje wykonanie określonego polecenia edytora (lub widgetu w kategoriach zsh) do widgetu, który w pierwszym wiersz powyższego przykładu toforward-word
.The
~/.zshrc
Należy ponownie pochodzą od tych dwóch polecenia są dodawane do niego z:$ source ~/.zshrc
Teraz jedną z irytacji w moim systemie jest to, że ta konkretna kombinacja spowodowała, że emulator terminala wydawał sygnał dźwiękowy za każdym razem, gdy polecenie było wydawane, co naprawiłem, wyłączając
'Edit'->'Profile Preferences'->'Terminal Bell'
pole wyboru.źródło
To, co działało mi najlepiej, jeśli chodzi o bardziej intuicyjną nawigację w wierszu poleceń iTerm2 (jestem młodym dorosłym, który nie dorastał w wierszu poleceń, ale spędziłem dużo czasu w edytorach tekstowych i IDE) do:
Natural Text Editing
opcję z listy rozwijanej Ustawienia wstępne.Spowoduje to ustawienie kluczy edytora w bardziej standardowy sposób, bez konieczności modyfikacji każdej opcji osobno.
źródło
Sugeruję, aby użyć
zkbd
do skonfigurowania skrótów klawiszowych. Używam go i Alt+ Left/ Alt+ Rightdziała dobrze na iTerm2. Zobaczzshcontrib(1)
szczegóły na temat zkbd.źródło