Speichern von Vim-Makros

166

Weiß jemand, wie man in einem VIM-Editor aufgezeichnete Makros richtig speichert / wiederverwendet?

jnadro52
quelle

Antworten:

216

Verwenden Sie qgefolgt von einem Buchstaben, um ein Makro aufzuzeichnen. Dies wird nur in eines der Copy / Paste-Register eingegeben, sodass Sie es wie gewohnt mit den Befehlen "xpoder "xPim normalen Modus einfügen können.

Um es zu speichern, öffnen Sie .vimrc und fügen den Inhalt ein. Das Register befindet sich dann beim nächsten Start von vim.
Das Format ist so etwas wie:

let @q = 'macro contents'

Achten Sie jedoch auf Zitate. Sie müssten ordnungsgemäß entkommen.

So speichern Sie ein Makro:

  • Aus dem normalen Modus: qq
  • Geben Sie die Befehle ein
  • Aus dem normalen Modus: q
  • öffne .vimrc
  • "qpum das Makro in Ihre let @q = '...'Zeile einzufügen
Dan Olson
quelle
3
Wenn Sie Sonderzeichen einfügen müssen (in meinem Fall Escape), verwenden Sie diese CTRL-V <ESC>im Einfügemodus, um das richtige Zeichen einzufügen. Ein Literal <ESC>funktioniert nicht
adam_0
5
"Beachten Sie jedoch, dass die obige Methode mit: let für Makros, die mit einem <CR> - oder <NL> -Zeichen (Wagenrücklauf oder Zeilenumbruch) enden, nicht wie erwartet funktioniert." vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo
2
Sind die Anführungszeichen (um Makroinhalte) erforderlich?
user2472071
15
Ctrl+r Ctrl+r registerNameEingaben registrieren Inhalte, ohne sie zu interpretieren - besser als "qp. +1 für die In-Vim-Methode.
LAFK sagt Reinstate Monica
@ adam_0 Könntest du das näher erläutern? Vielleicht ein Beispiel hinzufügen? Ich kann nicht herausfinden, wie man Sonderzeichen einbettet, nämlich esc. Ich habe jede Kombination versucht, eine Flucht ohne Erfolg einzugeben. Der "Schlüsselcode" ruiniert das Makro und die gesamte Sequenz wird gedruckt.
GH05T
21

Für eine robustere Lösung können Sie Marvim ausprobieren .

Sie können ein Makro in einem bestimmten Namespace speichern (oder den Dateityp als Standard-Namespace verwenden) und später nach Ihren gespeicherten Makros suchen und diese in ein gebrauchsfertiges Register laden.

Wenn Sie viele Makros wiederverwenden, ist dies ziemlich hilfreich.

zufällig
quelle
6
Ich möchte dies nur unterstützen und sagen, wie einfach es ist, eine einzelne Datei in Ihr / plugin-Verzeichnis zu kopieren. Speichern Sie dann mit F3 ein Makro und mit F2.
Raine Revere
18

Schreiben Sie Ihre Makros in ~ / .vimrc, um ein durch STRG + O gestartetes Makro anhand eines Beispiels zu definieren, und fügen Sie Ihrem ~ / .vimrc die folgende Zeile hinzu:

map <C-O> MACROTEXT

Wenn Sie ein Makro durch Eingabe aufzeichnen qa, können Sie Ihren Makrotext durch Eingabe abrufen"ap

Raoul Supercopter
quelle
Die Verwendung von "ap oder gleichwertig" hat nicht funktioniert, aber Sie können zu denselben Informationen gelangen, indem Sie: reg
DShook
"ap würde sich auf ein Makro beziehen, das im aRegister aufgezeichnet ist
Tyler Fowle
11

Mit dem Befehl :mkexrc(oder :mkvimrc) können alle aktuellen :mapund :setEinstellungen in einer Datei gespeichert werden. Siehe :help mkexrcfür Details.

Matthew Slattery
quelle
4

Sie können dies auf Ihrem tun ~/.vimrc

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

HINWEIS: Sie müssen doppelte Anführungszeichen verwenden, um Sonderschlüssel wie in verwenden zu können \<this silly example>.

SergioAraujo
quelle