To dość ciekawa prośba, ponieważ nie ma „trybu” nagrywania makra. Po przejrzeniu niektórych dokumentów znalazłem następujące wusr_10
Zaczynasz od przejścia do pierwszego znaku pierwszego wiersza. Następnie wykonaj następujące polecenia:
qa Rozpocznij rejestrowanie makra w rejestrze a .
^ Przejdź na początek linii.
i # include „Wstaw ciąg #include” na początku wiersza.
$ Przejdź na koniec linii.
a „Dołącz znak podwójnego cudzysłowu (”) na końcu wiersza.
j Przejdź do następnego wiersza.
q Zatrzymaj rejestrowanie makra.
Cechą wyróżniającą mnie było zdanie o „Rozpocznij rejestrowanie makra w rejestrze a”
Ponieważ każde makro będzie domyślnie zapisywane w rejestrze, miałem nadzieję, że będziemy w stanie zobaczyć je na :reg
liście. Okazuje się, że działa jak urok!
Przykład:
W trybie normalnym: qaisomething<Esc>
a wewnątrz :reg
widzimy wpis!
"a isomething^[
Mając tę wiedzę, powinieneś być w stanie „szpiegować” rejestry, aby potwierdzić, że makro jest rejestrowane (użyj nazwanego rejestru na każdym nagraniu [mapa, q
aby zawsze używać tego samego rejestru (lub czegoś podobnego)]
Jeśli napotkasz problemy, daj mi znać, a ja postaram się Ci pomóc (ponieważ ta funkcja jest dla mnie również nowa: D)
edytuj
Aby rozwiązać problem z rejestrem używanym podczas szarpnięcia, polecam przyjrzeć się specjalnemu rodzajowi rejestru, którego można użyć tylko do vimL
pisania (żaden szarpnięcie nigdy nie będzie zaangażowane w rejestrze ( "ay
))
Oto trochę informacji :help registers
na temat dostępnych rejestrów
Istnieje dziesięć rodzajów rejestrów: rejestry E354
Rejestr nienazwany „”
10 numerowanych rejestrów „0 do” 9
Mały skasowany rejestr ”-
26 nazwanych rejestrów „a” na „z” lub „A na” Z
trzy rejestry tylko do odczytu „:,”., „%
alternatywny rejestr bufora "#
rejestr wyrażeń "=
Selekcja i upuszczanie rejestruje „*”, „+” i „~”
Rejestr czarnej dziury "_
Rejestr wzorca ostatniego wyszukiwania "/
Zakładając, że masz rejestr, którego będziesz teraz używać, problem brzmi „skąd mam wiedzieć, kiedy nagrywanie zostało zatrzymane?”. Dbać o to bym spojrzeć Pod autocmd-event
dla CursorHold
; notatka w dokumentach pomocy wygląda dość obiecująco (postaram się dowiedzieć, jak odróżnić normalny wskaźnik zatrzymania kursora od nieużywanego / nieistniejącego zdarzenia, które pojawia się, gdy rejestr jest zapisywany na potrzeby makra)
CursorHold
Gdy użytkownik nie naciska klawisza przez czas określony w parametrze „updatetime”. Nie jest uruchamiany ponownie, dopóki użytkownik nie naciśnie klawisza (tzn. Nie uruchamia się co ms przez aktualizację, jeśli zostawisz Vima, aby zrobić kawę. :) Zobacz | CursorHold-example | do podglądu tagów. To zdarzenie jest uruchamiane tylko w trybie normalnym. Nie jest wyzwalany podczas oczekiwania na wpisanie argumentu polecenia lub ruch po operatorze. Podczas nagrywania zdarzenie CursorHold nie jest wyzwalane. | q |