Zapisywanie makr Vima


166

Czy ktoś wie, jak poprawnie zapisywać / ponownie używać makr zapisanych w edytorze VIM?

Odpowiedzi:


216

Użyj, qpo której następuje litera, aby zarejestrować makro. To po prostu trafia do jednego z rejestrów kopiuj / wklej, więc możesz wkleić go normalnie za pomocą poleceń "xplub "xPw trybie normalnym.

Aby go zapisać, otwórz .vimrc i wklej zawartość, a rejestr będzie dostępny przy następnym uruchomieniu vima.
Format jest taki:

let @q = 'macro contents'

Uważaj jednak na cytaty. Musieliby odpowiednio uciec.

Aby zapisać makro, możesz zrobić:

  • Z trybu normalnego: qq
  • wprowadź dowolne polecenia
  • Z trybu normalnego: q
  • otwórz .vimrc
  • "qpaby wstawić makro do let @q = '...'linii

3
Ponadto, jeśli chcesz wstawić znaki specjalne (takie jak escape, w moim przypadku), użyj CTRL-V <ESC>w trybie wstawiania, aby wstawić właściwy znak. Dosłowny <ESC>nie działa
adam_0

5
„Należy jednak pamiętać, że powyższa metoda wykorzystująca: let nie będzie działać zgodnie z oczekiwaniami dla jakichkolwiek makr, które kończą się znakiem <CR> lub <NL> (powrót karetki lub nowa linia).”. vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo

2
Czy cudzysłowy (wokół zawartości makr) są wymagane?
user2472071

15
Ctrl+r Ctrl+r registerNamewejścia rejestrują treść bez ich interpretacji - lepiej niż "qp. Mimo to +1 dla metody in-vim.
LAFK mówi Przywróć Monikę

@ adam_0 Czy mógłbyś to rozwinąć? Może podaj przykład? Nie mogę dowiedzieć się, jak osadzić znaki specjalne, a mianowicie esc. Próbowałem każdej kombinacji ucieczki bez skutku. „Kod klucza” ostatecznie zrujnuje makro i cała sekwencja zostanie wydrukowana.
GH05T

21

Aby uzyskać bardziej niezawodne rozwiązanie, możesz sprawdzić Marvim .

Umożliwia zapisanie makra w określonej przestrzeni nazw (lub użycie typu pliku jako domyślnej przestrzeni nazw) i późniejsze wyszukanie zapisanych makr i załadowanie ich do rejestru gotowego do użycia.

Jeśli ponownie używasz wielu makr, jest to bardzo pomocne.


6
Po prostu chcę to powtórzyć i powiedzieć, jak łatwo jest skonfigurować marvim - skopiuj pojedynczy plik do katalogu / plugin, a następnie użyj F3, aby zapisać makro i F2, aby uruchomić.
Raine Revere

18

Napisz swoje makra w swoim ~ / .vimrc, aby zdefiniować makro uruchamiane przez CTRL + O na przykład, dodaj następujący wiersz do swojego ~ / .vimrc:

map <C-O> MACROTEXT

kiedy rejestrujesz makro, wpisując qatekst, możesz pobrać tekst makra, wpisując"ap


Używanie „ap lub odpowiednika nie działało, ale możesz uzyskać te same informacje przez: reg
DShook

„ap odnosi się do makra zarejestrowanego w arejestrze
Tyler Fowle

11

Polecenie :mkexrc(lub :mkvimrc) może służyć do zapisywania wszystkich bieżących :mapi :setustawień do pliku. Zobacz :help mkexrcszczegóły.


4

Możesz to zrobić na swoim ~/.vimrc

:let @a="iHello World!\<CR>bye\<Esc>"

UWAGA: Aby móc używać klawiszy specjalnych, takich jak w \<this silly example>.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.