Opóźnienie, zanim „O” otworzy nową linię?

82

Zauważyłem, że czasami, gdy używam O(duże „o”), aby utworzyć nową linię i przejść do trybu wstawiania, występuje krótkie opóźnienie, zanim cokolwiek się stanie.

Czy to powszechne? Czy można to zmienić?

Oba :map Oi :imap Opokazują „Nie znaleziono mapowania”, więc nie sądzę, żeby było to dziwne mapowanie.

David Wolever
źródło
Zgadzam się z superuser.com: być może jest to spowodowane podświetleniem składni i ponownym obliczeniem formatowania?
monojohnny
4
Nie używaj tagów typu „nalezy do superużytkownika”. Tagi nie służą do wyrażania opinii - zobacz meta.stackexchange.com/questions/36819/… . Jeśli uważasz, że należy do SU, zagłosuj, aby go tam przenieść.
Zostałem poprawiony. Nie będę już używać tych tagów. Nadal uważam, że to bardzo dobre pytanie jest rodzajem pytania, które należy do SU i mam nadzieję, że tam je znajdę.
jjclarkson
Tak, przepraszam - masz rację. To powinno być na SU. Czy istnieje szybki i łatwy przycisk, którego mogę użyć do migracji (i odpowiedzi?)
David Wolever,

Odpowiedzi:

92

To dlatego, że 'esckeys'opcja jest włączona (konsekwencja tego, nocompatibleco właśnie odkryłem). Po naciśnięciu ^[Owystępuje niewielkie opóźnienie, ponieważ dowiaduje się, czy używasz klawisza strzałki / klawisza funkcyjnego, czy też masz na myśli te dwa klawisze po kolei.

Jednym z rozwiązań jest wyłączenie tej opcji i rezygnacja z klawiszy strzałek w trybie wstawiania.
Innym jest ustawienie 'timeoutlen'mniej niż 1000, może 100 (ale uważaj na wolne połączenia).
Innym jest użycie ^Czamiast ^[wychodzenia z trybu wstawiania.

Josh Lee
źródło
Fajne dzięki! Również dla każdego, kto może to czytać: przed wyłączeniem, sprawdź stronę pomocy 'esckeys'- to pozwala na użycie np. Klawiszy strzałek w trybie wstawiania. U 'timeoutlen'mnie dobrze działało ustawienie .
David Wolever
3
ttimeoutlenMożna również ustawić limit czasu dla samych kodów klawiszy. Zobacz vim's:help ttimeoutlen
k107
1
Nadal mam opóźnienie, nawet po :set noesckeyslub :set timeout timeoutlen=1000 ttimeoutlen=100... Jakieś pomysły? (Cygwin, VIM skompilowany ze źródła)
Yichuan Wang
1
Działało dobrze dla mnie z: set timeout timeoutlen = 3000 ttimeoutlen = 100 (zgodnie z zaleceniami w pomocy vima). Samo ustawienie limitu czasu na małą wartość było złym pomysłem - niektóre mapowania przestały działać.
jkff
Nie rozumiem. Kiedy 'esckeys'jest włączona, dlaczego nie mogę wpisać sekwencji <esc>[Aw trybie wstawiania, aby przesunąć kursor w górę?
Qian
3

Dzieje się tak, jeśli naciśniesz „O” zaraz po klawiszu Escape, prawda? Zawsze zakładałem, że to dlatego, że kierowca terminalu trochę czekał, żeby zobaczyć, czy zamierzasz ukończyć sekwencję ucieczki.

Sean
źródło
0

Podejrzewam, że to wtedy, gdy musisz zapisać plik wymiany na dysk. Upewnij się, że używasz vima na komputerze z szybkim dostępem do dysku; jeśli musisz użyć współdzielonego systemu plików, możesz spróbować przenieść plik wymiany za pomocą

:set directory=/path/to/local/dir
Piotr
źródło
Po drugie - w pracy nasze katalogi domowe są montowane na NFS i często widzę tego rodzaju opóźnienia.
Cascabel
... oczywiście, jeśli jest to tylko dla O, a nie o, z pewnością jest to sekwencja klawiszy ucieczki, jak mówi jleedev!
Cascabel
1
Cóż, mimo że ta odpowiedź bezpośrednio nie dotyczy OP, czuję, że jest nadal aktualna. Nie mogę zgodzić się z osobą, która zagłosowała w dół.
Jeffrey Jose
Nie była odpowiedzią na problem OP, ale dobrą teorią i pouczającym wyjaśnieniem. Dzięki!
supervacuo