Speichern von Vim-Makros


166

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

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

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.


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


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.


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>.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.