Szukaj…
Nagrywanie makra
Jednym ze sposobów utworzenia makra jest jego zarejestrowanie .
Rozpocząć nagrywanie makra i zapisać go do rejestru (w tym przykładzie użyjemy , ale może to być dowolny zarejestrować można normalnie szarpać tekst): a
qa
Następnie uruchom polecenia, które chcesz nagrać w makrze (tutaj otoczymy zawartość linii tagami <li>
):
I<li><ESC>A</li>
Kiedy skończymy z poleceniami, które chcemy nagrać w makrze, zatrzymaj nagrywanie:
q
Teraz, za każdym razem chcemy wykonać nagraną sekwencję poleceń zapisanych w a
, użytkowania:
@a
i vim powtórzy nagraną sekwencję.
Następnym razem, gdy chcesz powtórzyć ostatnie użyte makro, możesz dwukrotnie wpisać @
:
@@
Jako dodatkowy bonus warto pamiętać, że jeśli umieścisz liczbę przed poleceniem, powtórzy ją tyle razy. Więc powtórzyć makra zapisane w rejestrze a
20 razy:
20@a
Edycja makra vim
Czasami popełnisz błąd przy długim makrze, ale wolisz go edytować niż całkowicie nagrać ponownie. Możesz to zrobić przy użyciu następującego procesu:
Umieść makro w pustej linii za pomocą
"<register>p
.Jeśli twoje makro jest zapisane w rejestrze
a
, polecenie brzmi"ap
.Edytuj makro zgodnie z potrzebami.
Wciągnij makro do właściwego rejestru, przesuwając kursor na początek linii i używając
"<register>y$
.Możesz ponownie użyć oryginalnego rejestru lub użyć innego. Jeśli chcesz użyć rejestru
b
, polecenie brzmi"by$
. Lub przy użyciu"<register>d$
(usuwa nieużywaną linię)
Makra rekurencyjne
Makra Vima mogą być również rekurencyjne. Jest to przydatne, gdy musisz działać na każdym wierszu (lub innym obiekcie tekstowym) do końca pliku.
Aby zarejestrować makro rekurencyjne, zacznij od pustego rejestru. (Rejestr można opróżnić, używając q<register>q
.)
Wybierz spójny punkt początkowy na każdej linii, aby rozpocząć i zakończyć.
Przed zakończeniem nagrywania wywołaj samo makro jako ostatnie polecenie. (Dlatego rejestr musi być pusty: aby nic nie zrobił, ponieważ makro jeszcze nie istnieje).
Przykład, biorąc pod uwagę tekst:
line 1
line 2
line 3
foo bar
more random text
.
.
.
line ???
W trybie normalnym, z kursorem w pierwszym wierszu i pustym rejestrem a
, można zapisać to makro:
qaI"<Esc>A"<Esc>j@aq
Następnie, przy pojedynczym wywołaniu @a
, wszystkie wiersze pliku byłyby teraz wewnątrz podwójnych cudzysłowów.
Co to jest makro?
Makro to seria naciśnięć klawiszy, które Vim może „odtworzyć” bez opóźnień. Makra mogą być przechowywane w rejestrach lub zmiennych, powiązane z kluczami lub wykonywane w wierszu poleceń.
Oto proste makro, które ma duże litery trzeciego word
w wierszu:
0wwgUiw
To makro można zapisać w rejestrze q
:
qq start recording into register q
0wwgUiw
q stop recording
lub zapisane bezpośrednio w rejestrze q
:
:let @q = '0wwgUiw'
do odtworzenia za pomocą:
@q
Ale można go również wpisać bezpośrednio w wierszu polecenia:
:normal 0wwgUiw
do natychmiastowego odtwarzania za pomocą polecenia :normal
.
Lub wstaw do zmiennej:
:let myvar = '0wwgUiw'
do odtworzenia za pomocą:
@=myvar
Lub zapisany jako mapowanie:
nnoremap <key> 0wwgUiw
do odtworzenia przez naciśnięcie <key>
.
Jeśli chcesz zapisać makro do późniejszego wykorzystania, możesz wpisać w trybie wstawiania:
<C-r>q
To wstawia makro do rejestru q
(w tym przykładzie: 0wwgUiw
). Możesz użyć tego wyjścia np. Do zdefiniowania makra w vimrc
:
let @q='0wwgUiw'
W ten sposób rejestr q
jest inicjowany za pomocą tego makra przy każdym uruchomieniu vima.
Nagrywanie i odtwarzanie akcji (makra)
za pomocą polecenia q
moglibyśmy uprościć wiele żmudnej pracy w vimie.
przykład 1. wygeneruj sekwencję tablic (od 1 do 20).
KROK 1. naciśnij i
aby przejść do trybu wstawiania, wejście 1
1
KROK 2. Zapisz następującą czynność: „dołącz ostatni numer do następnego wiersza i zwiększ liczbę”
- wpisz
esc
aby wyjść z trybu wprowadzania - wpisz
qa
aby przejść do trybu nagrywania za pomocą buforaa
- wpisz
yy
p
aby skopiować bieżący wiersz i wkleić go jako następny wiersz - wpisz
ctrl
+a
aby zwiększyć liczbę - ponownie wpisz
q
aby zakończyć nagrywanie
1
2
KROK 3. Powtórz akcję 18 razy.
wpisz 18@a
aby powtórzyć akcję 3 i akcję 4 w kroku 2.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20