Skróty klawiszowe nie działają w Zsh, gdy $ TERM jest ustawiony na screen-256color

0

Zgodnie z różnymi innymi dyskusjami związałem opt+ <-z 0x1b 0x62i opt+ ->z 0x1b 0x66. Działa to świetnie w Zsh, ale nie w Tmux.

W tmux opt+ <-przeskakuje backwords na słowo, ale wydaje się także, że wprowadza modyfikację trybu… podczas pisania spóźniej znak pod kursorem zostanie usunięty.

Mam również problemy z cmd+ ->( 0x05) i cmd+ <-( 0x01) - w zsh te klawisze nawigują do końca i początku linii, ale w tmuxie to wcale nie działa.

Nie sądzę, że istnieją jakieś skróty klawiszowe dla tych kodów szesnastkowych, więc zakładam, że coś gubi się na drodze z iTerm2 do tmux… Bezpośrednie wywołanie readzsh i tmux powoduje wyświetlenie tych samych kodów dla optwspomnianych powyżej powiązań, ale nie cmdwypisuje cokolwiek dla powiązań w tmux.

Edytować:

Eksperymentowałem jeszcze trochę i odkryłem, że wiązania działają dobrze, gdy używasz / bin / bash w tmux i psują się tylko podczas używania zsh w tmux. Nawet przetestowałem / bin / zsh bez ładowania .zshrc, aby sprawdzić, czy coś jest nie tak z homebrews zsh, ale powiązania również tam są zerwane. Wygląda na to, że jest to problem z zsh.

Edytować:

Więcej eksperymentów! Wydaje się, że jest to związane ze zmienną środowiskową $ TERM, która jest ustawiona na „screen-256color” przez mój plik .tmux.conf - wydaje się to poprawne, aby kolory działały, ale gdy tylko zsh uruchomi się z tą zmienną środowiskową, nawigacja przestaje działać. Uruchomienie TERM=screen-256color zshodtwarza problem.

Strayer
źródło
Czy bindkey -eużywałeś po uruchomieniu Zsh bez .zshrc? W przeciwnym razie nie działa nawet w zwykłym terminalu.
SilverWolf,

Odpowiedzi:

1

Wygląda na to, że w końcu znalazłem odpowiedź! A raczej obejście, ponieważ wciąż nie jestem pewien, co dokładnie dzieje się nie tak.

Jawne skonfigurowanie skrótów klawiszowych do nawigacji po słowach rozwiązało problem:

bindkey "^[f" forward-word
bindkey "^[b" backward-word

Może zsh używa różnych skrótów klawiszowych opartych na $ TERM.

Strayer
źródło