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:

  1. Umieść makro w pustej linii za pomocą "<register>p .

    Jeśli twoje makro jest zapisane w rejestrze a , polecenie brzmi "ap .

  2. Edytuj makro zgodnie z potrzebami.

  3. 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ę”

  1. wpisz esc aby wyjść z trybu wprowadzania
  2. wpisz qa aby przejść do trybu nagrywania za pomocą bufora a
  3. wpisz yy p aby skopiować bieżący wiersz i wkleić go jako następny wiersz
  4. wpisz ctrl + a aby zwiększyć liczbę
  5. 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


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow