Podczas używania set showcmd
Vima pokazuje częściowe polecenia w ostatnim wierszu ekranu. Na przykład w trybie normalnym podczas wpisywania polecenia dt.
wyświetla się ostatni wiersz, dt
a następnie po naciśnięciu .
polecenia polecenie jest zakończone, a zatem nic nie jest wyświetlane.
Czy istnieje sposób na pokazanie pełnych poleceń? Na przykład podczas pisania zostanie wyświetlony dt.gU(
pierwszy dt.
; a kiedy zaczniesz wpisywać drugie polecenie, pierwsze zostanie wyczyszczone, tak że na końcu gU(
wyświetli się tylko.
Może to być przydatne na przykład w ilustrowaniu plików GIF; i żeby sprawdzić, czy wpisałeś to, co chciałeś, jeśli napotkasz nieoczekiwany wynik.
options
command-history
Gonçalo Ribeiro
źródło
źródło
dt
Jest pokazany, ponieważ jest obecny operator toku. Po otrzymaniu ruchu przestaje być operatorem. Załóżmy, że poszliśmy dalej i tak zrobiliśmydt.gU(gu)daw
. Czy to wszystko to „jedno pełne polecenie”, czy to cztery pełne polecenia, czy coś jeszcze?dt.gU(
są 2 polecenia:dt.
igU(
.... Więc tak naprawdę chcesz pokazać jakąś historię poleceń (Vim już pokazuje „pełne komendy”).src/normal.c
zaproszeniach koduclear_showcmd()
w kilku miejscach (normal_cmd()
,do_pending_operator()
,end_visual_mode()
). Bawię się zrzucaniem do plikushowcmd_buf
w tych momentach, który wyglądał całkiem nieźle, ale daje mi pewność, że nie możesz dostać tego, czego chcesz, bez podobnej modyfikacji kodu źródłowego Vima i przebudowania go. Oczywiście, zrobienie tego może być kłopotliwe, aby tworzyć gify.Odpowiedzi:
W zwykłym Vimie nie mogłem tego zrobić. Jeśli jednak chcesz załatać Vima, poniższe opcje mogą działać dla Ciebie.
Bardzo prosta łatka (zastosowana w Vim-7.4.052) wyłącza aktualną aktualizację ekranu, która usuwa historię po zakończeniu normalnego polecenia. Robi to, zwracając, czy
showcmd_is_clear
przed aktualizacją wyświetlacza ustawiono, czy nie . (alternatywnie możesz skomentować instrukcję if i pozostawić tylko jedną oryginalnąreturn
linię. uwaga : łatka poniżej nie wkleiła się zbyt dobrze; być może będziesz musiał zastosować ją ręcznie, chociaż jest to tylko krótka linijka. uwaga : I nie nie wypowiedzieć się rzeczywistadisplay_showcmd()
, ponieważ wydaje się być używany w trybie wizualnym, aby zaktualizować wyświetlanie liczby wybranych linii lub innych ewentualnie inne rzeczy nie mam przetestowane to..Wynik wygląda następująco:
Kilka ciekawych rzeczy do zapamiętania:
j
,k
,b
itpx
Komenda faktycznie stajedl
w showcmd_buf.:
polecenia lub przejścia do trybu wstawiania (przynajmniej w mojej konfiguracji))"
, ale moja sekwencja klawiszy jest widoczna w oknie vim dla mojego długiego rejestru określonego szarpnięciem.^[
w obszarze showcmdźródło
Oprócz rozwiązania Johna istnieje jeszcze jeden sposób pokazania wszystkich naciśnięć klawiszy vima, które zostały naciśnięte przy użyciu
-w
parametru, który rejestruje wszystkie znaki, które wpisujesz w pliku. Problem polega na tym, że vim zapisuje naciśnięcia klawiszy tylko po wyjściu z Vima. Tak działa VimGolf .Aby obejść ten problem, Kana Natsuno opracował łatkę jednowierszową , która wyłącza buforowanie
-w
opcji, dzięki czemu masz dostęp do strumienia naciśnięć klawiszy w czasie rzeczywistym. Następnie należy je odczytać (np.tail -f
), Przeanalizować lub spróbować wyświetlić je na pasku stanu (:set statusline
).Sprawdź niestandardową kompilację Vima, korzystając z gałęzi DrewV w MacVim, aby uzyskać strumień klawiszy w czasie rzeczywistym.
Źródło: Vimprint - parser naciśnięć klawiszy Vima na blogu Drew Neil
Jest to przydatne, jeśli chcesz ujawnić naciśnięcia klawiszy Vima w samouczkach wideo lub plikach GIF.
źródło