Przypadek użycia
Jestem w trybie normalnym. Nie myślałem wprost o nagraniu makra, ale dokonuję zmiany jednego polecenia. Teraz mogę powtórzyć tę akcję, używając kropki.
Teraz zdaję sobie sprawę, że warto zapisać w makrze, aby użyć później, zamiast wpisywać całe polecenie za każdym razem. Mogę albo zająć się wszystkimi zmianami, które wymagają teraz tego polecenia, używając kropki, lub mogę kontynuować edycję i użyć tego polecenia, zapisując je w makrze.
To drugie chcę zrobić, ale najprostszy sposób, w jaki mogę to zrobić, nie jest łatwy - cofnij moją zmianę, zacznij nagrywać makro i ponownie wpisz polecenie, aby wprowadzić wymaganą zmianę i przestań rejestrować makro.
Co próbowałem do tej pory:
Zapis kropki w makrze nie działa, ponieważ rejestruje kropkę, a nie zmianę, którą wykonuje kropka. (Na przykład załóżmy, że polecenie zapisane w kropce brzmiało: d5w
jeśli zaczniesz rejestrować makro i wykonasz akcję za pośrednictwem. Oczekując, że usunie 5 słów przy każdym uruchomieniu makra, to się nie stanie. Przy następnym uruchomieniu makro zrobi kropkę, a nie polecenie d5w
. Oznacza to, że jeśli dokonałeś innej zmiany po zarejestrowaniu makra - powiedz, usuń 3 słowa za pomocą d3w
i była to ostatnia dokonana zmiana, a kiedy uruchomisz makro, usunie 3 słowa, a nie 5, bo to po prostu działa .
)
źródło
Odpowiedzi:
Vim nie przechowuje historii poleceń w trybie normalnym. Jeśli chcesz zachować historię swojej historii trybu normalnego, możesz skorzystać z następujących opcji, aby zapisać ją w pliku: https://vi.stackexchange.com/a/587/13848
Polecenia w trybie normalnym są zwykle krótkie, więc ludzie po prostu wpisują je w trybie normalnym i nie próbują tworzyć makr. Jeśli jednak chcesz tworzyć makra z poleceń trybu normalnego, możesz przekonwertować je na
Ex
polecenie trybu, a następnie zapisać je w makrze, jak wskazał @wmmso. Możesz to zrobić za pomocąnorm
polecenia. Więc jeśli chcesz usunąć 2 słowa, zaczynając od bieżącej pozycji kursora, i użyj polecenia trybu normalnego wEx
trybie użycia:norm d2w
. (Patrz: http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , Wykonaj normalne polecenie poza zakresem )Lepiej jest użyć
Ex
polecenia trybu, jeśli jest to polecenie skomplikowane, ponieważ pozwala na wpisanie pełnego polecenia w buforze, upewnienie się, że jest rzeczywiście poprawne, a także zapisanie go w historii wiersza poleceń.Teraz, gdy masz polecenie trybu normalnego w trybie ex, możesz także przeglądać swoje polecenia, używając historii
q:
, a następnie skopiować je do rejestru za pomocą"ay$
, podczas gdy w wierszu zawierającym wiersz poleceń, który chcesz zapisać w makrze. Następnie, gdy chcesz uruchomić makro, możesz je wykonać za pomocą@a
źródło
d2w
?skopiuj zawartość rejestru „:” (co właśnie zrobiłeś) do innego rejestru, np. zarejestruj:
możesz wykonać go ponownie za pomocą
źródło
:
zawiera ostatnio wykonane polecenie:command-name-goes-here
zamiast zamiast polecenia trybu normalnego, takiego jakd2w