Dlaczego vim opóźnia się o sekundę za każdym razem, gdy używam polecenia „O” (otwórz nowy wiersz powyżej i wstaw)?

26

Kiedy używam większości poleceń, działają one natychmiast. Kiedy jednak używam Opolecenia, widzę, że „O” zamienia bieżący znak na około sekundę, a następnie bieżący znak powraca, a nowa linia jest wstawiana i otwierana.

Nie mam takiego problemu z opoleceniem (otwórz nowy wiersz poniżej i wstaw).

Jeśli to robi różnicę, używam vimz bash, w Gnome Terminal na Ubuntu 10.04.

Mateusz
źródło

Odpowiedzi:

27

Jeśli poprzednim naciśniętym klawiszem był ESC, dzieje się tak, ponieważ istnieją klawisze, które mogą generować sekwencje specjalne rozpoczynające się od ESC O. Na przykład w zależności od trybu klawiszy kursora klawisz strzałki w górę może generować sekwencję ESC O A.

Jeśli zobaczy częściową sekwencję ucieczki, vim poczeka krótką przerwę, aby sprawdzić, czy odebrano inny znak, który pasuje do jednej z sekwencji ucieczki zdefiniowanych dla twojego typu terminala. Jeśli nie, znaki będą traktowane jako osobne naciśnięcia klawiszy. Możesz to przetestować, wpisując wielką literę A, czekając, aż linia się otworzy, aby sprawdzić, czy zamiast tego traktuje to jako strzałkę w górę.

Istnieje kilka ustawień vima, których można użyć do kontrolowania tego. :set ttimeoutlen=100zmieni limit czasu sekwencji ucieczki na 100ms. :set noesckeyscałkowicie wyłączy rozpoznawanie klawiszy wysyłających sekwencję zmiany znaczenia w trybie wstawiania. Również tryb zgodny z vi nie będzie miał tego problemu, ponieważ esckeys jest wyłączony w tym trybie - dlatego vim -u NONEdziała.

mark4o
źródło
Żeby wyjaśnić, mój „eksperyment” z plikiem linii o wielkości 140k był w pełnym trybie vim z moim standardowym zestawem wtyczek i rodzajów plików. Widzę, gdzie mógłbyś dojść do wniosku, że skorzystałem, -u NONEale wciąż brakuje potwierdzenia z PO.
msw
łał! przez jakiś czas było to lekko irytujące, ale nigdy o tym nie myślałem. ma teraz sens. Esc OA rzeczywiście działa jak strzałka w górę.
Witalij Kushner,
2
:set noesckeysprawdopodobnie nie jest tym, czego chcesz - ustaw go, a następnie naciskaj klawisze strzałek w trybie wstawiania, nawet jeśli nie planujesz ich używać, nie chcesz, aby to zrobili! Noesckeys również nie przyspiesza działania poza trybem wstawiania. ttimeoutlenjest zdecydowanie najlepsza
JonnyRaa