Moje ustawienia terminala to gnome-terminal + tmux + zsh z powiązaniami vi.
W aplikacjach takich jak vim, a nawet w trybie edycji vi wiersza poleceń zsh, muszę często naciskać ESCklawisz, ale zanim wystąpią efekty tego klawisza, występuje niewielkie opóźnienie. Zobacz ekran GNU spowalnia klawisz Vim ESC
Po kilku eksperymentach odkryłem, że naciśnięcie ESCklawisza i natychmiast inny klawisz (powiedzmy b) ma taki sam efekt jak uderzenie Alt+b. Nie wiem, dlaczego tak jest (prawdopodobnie z wcześniejszych powodów, kiedy nie było Alt? Nie wiem). Tak czy inaczej, mam dwa Altklucze i nie chcę tego zachowania z moim ESCkluczem. Próbowałem z C+[tym samym problemem.
Nie jestem pewien, kto jest za to odpowiedzialny, terminal gnome, tmux lub sam system operacyjny (Ubuntu Natty). Wszelkie pomysły, jak rozwiązać ten problem, byłyby świetne.
Aktualizacja : Sprawdziłem bez tmux na innym terminalu (LXTerminal) i tam też jest opóźnienie.
Odpowiedzi:
Oto faktyczna poprawka. Dodaj następujące elementy do
.tmux.conf
:źródło
tmux kill-server
aby to zadziałało.tmux-prefix
(domyślnieCtrl+b
), a następnie:
wpisującsource-file $HOME/.tmux.conf
.Opóźnienie jest spowodowane przez procedury wprowadzania, które mogą wymagać zdecydowania, czy klawisz funkcyjny został naciśnięty, czy nie. W tym celu procedura wejściowa uruchamia licznik za każdym razem, gdy odczytuje znak ESC. Znaki odczytywane z wejścia zanim skończy się czas (powiedzmy, dziesiąta część sekundy) są następnie interpretowane jako sekwencja ESC klawisza funkcyjnego i ta sekwencja ESC zostanie porównana ze znanymi ciągami sekwencji ESC z terminfo lub baza danych termcap (zależy od używanych procedur niskiego poziomu).
Oczywiście jest to denerwujące w przypadku aplikacji, w których ESC jest używany samodzielnie, ale nie znam żadnego obejścia tego problemu.
Jeśli chodzi o twoje pytanie z zachowaniem ESC a= Meta a:
Meta-klucze nie były dostępne we wszystkich klawiaturach. Aby obejść ten problem, często można było używać klawisza ESC do naciśnięcia przed drugim klawiszem.
źródło
Chociaż może to nie rozwiązać bezpośrednio problemu, okazało się, że mogę
<Ctrl> c
wyjść z trybu wstawiania. Można to również wykorzystać do opuszczenia przewijania ekranu tmux (które można wywołać za pomocą<leader> PgUP
)źródło
<C-c>
wyjścia z trybu wstawiania podczas regularnego używania, ponieważ nie uruchamia on poleceniaInsertLeave
automatycznego, którego mogą szukać niektóre wtyczki. Zobaczyć:h i_CTRL-C
.