Vim - opóźnienie przy wychodzeniu z trybu wizualnego

8

Jeśli naciśniesz ESC, aby wyjść z trybu wizualnego po zaznaczeniu tekstu, zauważalne będzie opóźnienie, zanim tekst zostanie odznaczony i wrócę do trybu normalnego (nawet jeśli wybiorę tylko 1-2 znaki). Czy można tego opóźnienia uniknąć?


źródło

Odpowiedzi:

2

Może to być spowodowane mapowaniem na dodatkowe funkcje. Na przykład używam wtyczki tabbar i mapuje 0-9, aby przejść do bufora liczb. Ilekroć klucz jest mapowany na dodatkowe funkcje, takie jak ten, vim czeka kilka sekund po naciśnięciu, aby sprawdzić, czy zamierzasz nacisnąć dodatkowe klawisze.

Aby sprawdzić, czy ma jakieś dodatkowe mapowania, uruchom :mapi poszukaj <Esc>w pierwszej kolumnie. Po uruchomieniu bez żadnych parametrów :mapwyświetli listę wszystkich niestandardowych mapowań. Jeśli chcesz wyświetlić tylko mapowania w trybie wizualnym, uruchom :vmap.

Jeśli ma dodatkowe mapowania, nie znam sposobu na usunięcie pauzy, oprócz usunięcia mapowań. Przerwa jest konieczna, aby vim mógł jednoznacznie wiedzieć, jakie działania zamierzasz podjąć.

cledoux
źródło
1
W terminalach podobnych do VT100 (w tym Xterm / Rxvt / PuTTY / GNOME) Escjest także prefiksem dla wszystkich klawiszy specjalnych, w tym nawet klawiszy strzałek.
user1686
@grawity: Prawda, ale Vim używa innych wartości limitu czasu dla tych sekwencji ucieczki niż w przypadku mapowań, więc obsługa tych sekwencji ucieczki zwykle nie powoduje zgłaszanego tutaj problemu. Zobaczyć :help 'timeout'.
garyjohn
Dzięki, to wszystko. Teraz muszę tylko znaleźć, które są mapowaniami, które zakłócają moje użycie.
0

Nie mam mapowania związanego z <ESC> globalnie lub w trybie Visual (wywołanie: verbose vmap <ESC> nie daje żadnych wyników), ale nadal występuje znaczne opóźnienie przy wychodzeniu z trybu Visual. Opóźnienie występuje nawet w nowych instalacjach bez vimrc. Użycie <Cc> powoduje natychmiastowe wyjście z trybu wizualnego.

Ponieważ nie lubię naciskać <Cc>, aby wyjść z dowolnego trybu, obecnie mapuję <ESC> na <Cc> w trybie wizualnym. Opuszcza tryb wizualny bez użycia przycisku <ESC>.

:vmap <ESC> <C-c>

Lub wstaw następujący wiersz do vimrc

vnoremap <ESC> <C-c>

To nie zadziała, jeśli masz mapowania w trybie globalnym lub wizualnym powiązane z <ESC>.

Lohfu
źródło
-2

To, co możesz zrobić, to użyć CTRL+, Caby wyjść z trybu Visual, co powinno uniknąć opóźnienia.

Florian
źródło