Mam plik z wieloma liniami. Nagrałem makro, które wykonuje operację na jednej linii. Chcę powtórzyć to makro na wszystkich pozostałych wierszach pliku. Czy jest na to szybki sposób?
Wypróbowałem Ctrl + Q, podświetliłem zestaw linii i nacisnąłem @@, ale to chyba nie pomogło.
vim
vim-macros
Jordan Parmer
źródło
źródło
Odpowiedzi:
Użyj normalnego polecenia w trybie Ex, aby wykonać makro w wielu / wszystkich liniach:
Wykonaj makro zapisane w rejestrze a w liniach od 5 do 10.
Wykonaj makro zapisane w rejestrze a w wierszach 5 do końca pliku.
Wykonaj makro zapisane w rejestrze a na wszystkich liniach.
Uruchom magazyn makr w rejestrze a we wszystkich wierszach pasujących do wzorca .
Aby wykonać makro na wizualnie wybranych liniach, naciśnij V i j lub k, aż zostanie wybrany żądany region. Następnie wpisz
:norm! @a
i obserwuj następującą linię wprowadzania.Enter : pomoc normalna w vimie, aby przeczytać więcej.
źródło
:norm! @a
:
po podświetleniu linii, linia wejściowa Ex przeczyta,:'<,'>
do której następnie dodasz resztę sugestii Kevina. Spowoduje to, że ostateczna komenda odczytu::'<,'>norm! @a
.!
Unika ponownego mapowania kluczy przez użytkownika. Możesz go nie potrzebować, ale odpowiedź, która działa dla wszystkich, wymaga tego.Użyj globalnego, aby uruchomić makro „a” na wszystkich liniach zawierających „wzorzec”
Aby uzyskać pomoc, należy sprawdzić:
:help global
.źródło
Możesz także to zrobić:
W trybie normalnym:
Na przykład:
Umieszcza makro w rejestrze q do kolejnych 1000 wierszy.
źródło
:%norm! @a
ivGG :norm! @a
j
poleceniem, aby przejść do następnego wiersza, w przeciwnym razie spróbuje zastosować go do tego samego wiersza.Jest też wtyczka o nazwie RangeMacro, robi dokładnie to, co chcesz! Dla wszystkich, którzy nie potrafią zgadnąć po nazwie, co robi: powtarza zarejestrowane makro dla każdej linii w danym zakresie, bez względu na wybór wizualny lub przez: 40,50 /: +10
Zobacz http://www.vim.org/scripts/script.php?script_id=3271
źródło