Przełączanie do i z trybu wstawiania w Vimie nie jest już natychmiastowe, ponieważ używam tmux. Po naciśnięciu Escw trybie wstawiania wyjście z trybu wstawiania zajmuje zauważalnie dużo czasu. Po naciśnięciu Esci po naciśnięciu dowolnego innego klawisza następuje natychmiastowe przełączenie, a polecenie klawisza naciśniętego po nim Escjest wykonywane. Masz pojęcie, co może to spowodować?
Konfiguracja Vima nie stanowi problemu, ponieważ opóźnienie nie występuje, gdy uruchamiam Vima poza tmux, więc prawdopodobnie jest to w jakiś sposób związane z tmux. Używam gnome-terminal btw.
Warto również zauważyć, że wydaje się, że nie mogę zdefiniować kluczowych powiązań w tmux, ponieważ Escmój plan polegał Escna:
bind Escape send-keys ^[
Niestety, wydaje się, że wiązanie czegokolwiek, Escponieważ tmux nie działa. Ten sam problem występuje również na ekranie.
źródło
man tmux
, a polecenie nie działa dla mnie.Miałem inny, ale podobny problem, który próbowałem rozwiązać, gdy znalazłem tę stronę, więc opublikuję ją tutaj, na wypadek, gdyby była pomocna dla każdego, kto szuka tej odpowiedzi i znajdzie tę stronę w ten sam sposób.
Problem: tryb vi w bash ma opóźnienie przy przełączaniu z trybu wstawiania do trybu poleceń
Rozwiązanie: W swoim
~/.inputrc
pliku dodajset keyseq-timeout n
gdzien
jest jakaś niska wartość większą niż 0.n
domyślnie 500 ms, co jest, co powoduje opóźnienia. Zobacz dokumentację tutaj .Ponadto, jeśli chcesz być w stanie określić, w jakim trybie jesteś, sprawdź rozwidlenie bata Dylana Cali .
źródło
0.01
i teraz jest przyjemnie znacznie szybsze. dzięki!/etc/inputrc
aby był dostępny dla wszystkich użytkowników.Wygląda na to, że używasz mapowania, które zaczyna się od ESC. Kiedy naciśniesz ESC, vim musi poczekać, aby sprawdzić, czy następny klawisz jest tym w mapowaniu. Jeśli tak nie jest, można natychmiast kontynuować.
Konfiguracja vima może być zależna od terminala, więc fakt, że nie dzieje się poza Tmuxem, nie znaczy wiele. Vim może zapytać o
$TERM
zmienną środowiskową i wybrać inną konfigurację w zależności od jej wartości.Ponieważ używa gnome-terminal, AFAIK,
xterm
jako wartość$TERM
zmiennej, i używa tmuxscreen
, przejrzałbym wszystkie twoje pliki konfiguracyjne vima w poszukiwaniu ustawień, które są używane tylko wtedy, gdy$TERM
zmienna jest równascreen
. Domyślam się, że jakiś plik konfiguracyjny vima w twoim systemie ustawia mapowania do obsługi klawiszy strzałek (te zaczynają się odESC
znaku), gdy terminal jestscreen
.Możesz to przetestować, tymczasowo zmieniając
$TERM
zmienną w tmux przed uruchomieniem vima. Jeśli twoja powłoka to bash, wywołaj vim jakow tmux i sprawdź, czy problem nadal występuje. Nie należy tego jednak traktować jako poprawki, ponieważ mogą występować różnice między terminalowymi możliwościami tmux i xterm i mogą wystąpić pewne problemy.
źródło
TERM=xterm vim
nie rozwiązałem problemu. Będę musiał kopać trochę głębiej.Jak wspomniano w tytule Screen, tutaj jest rozwiązanie, aby naprawić zachowanie klawisza Escape w ekranie GNU. (Zabrano stąd .)
Dodaj
do
.screenrc
pliku konfiguracyjnego.źródło