2010-05-31 6 views
24

Ich verwende den folgenden Vim Makro viel (es setzt die aktuelle Zeile innerhalb von XML-Tags):Wie speichere ich ein Vim-Makro, das "Escape" -Tasten enthält?

I<e>^[A</e> 

So gerettet ich es in meinem .vimrc

let @e='I<e>^[A</e>' 

Aber es funktioniert nicht.
Der ^[ Teil bedeutet „Escape“, aber es wird nicht als solche verstanden in .vimrc

Wie kann ich dieses Makro speichern oder über Makro, das „Escape“ enthält?

Antwort

31

Versuchen Sie, die Escape-Operation mit <Ctrl-v><Esc> im Einfügemodus einzugeben. Siehe :help i_CTRL-V in vim.

+2

Nein sollte es nicht. Mit der^[ist ein einzelnes Zeichen (Escape-Code für ESC), nicht die Zeichen '^' und '['. Habe es in vim und gvim 7.2 noch einmal getestet, es fügt eine Zeile in Tags korrekt ein. – catchmeifyoutry

+2

einfacher Test, wenn Sie den Cursor entlang des^[-Teils bewegen, sollten Sie nicht in der Lage sein, ihn zwischen^und [zu platzieren, da er einen einzelnen Schlüsselcode darstellt. – catchmeifyoutry

+0

Der Trick war in der Tat diese Single-Keycode-Charakter, ich sah zunächst nicht den Unterschied. Danke vielmals! –

17

<ESC> ist dein Freund hier. Wörtlich Typ <ESC>, also:

let @e=I<e><ESC>A</e> 

Siehe :help key-notation in Vim für weitere Informationen.

aktualisieren:

Ah ... <ESC> Werke in Tastenzuordnungen (wie :map <Leader>e <ESC>I<e><ESC>A</e> [getestet]), aber nicht in Makros, die buchstäblich erweitert werden. Ich habe gerade versucht, und diese getestet:

:let @e='^[I<e>^[A</e>' 

Wo ^[ ist nur ein Zeichen gebildet durch CTRL schlagen + VESC. Beachten Sie das Fluchtrecht am Anfang des Makros.

+0

funktioniert nicht.Außerdem denke ich, dass Zitate benötigt werden. –

+1

Jetzt glaube ich zu verstehen, was Sie mit "funktioniert nicht" meinen. Antwort aktualisiert – Johnsyweb

+1

Es funktioniert, vielen Dank :-D Der Trick war, dieses einzelne Zeichen anstelle von^zu verwenden [Jetzt merke ich, dass Catchmyeutryoutry die Lösung hatte! –

4

Wenn Sie mit Windows-Verhalten für vim wo Ctrl +V der Befehl Einfügen ist, ist die äquivalente Sequenz Ctrl +Q

Verwandte Themen