Zapisywanie makr Vima

166

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

jnadro52
źródło

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
Dan Olson
źródło
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.

losowy
źródło
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

Raoul Supercopter
źródło
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.

Matthew Slattery
źródło
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>.

SergioAraujo
źródło