2011-01-07 3 views
0

Ich benutze Vim Surround und Repeat Plugins, Zeilen von Text mit HTML-Tags zu umhüllen.Vim Surround + Wiederholen, umschließt meinen Text mit^M

I "yse <p>" und "ys $ <p>", sie funktionieren beide gut verwenden werden.

Ich versuche, den Befehl zu wiederholen mit „“, und es zeigt <p> im Terminal, aber wenn ich den Befehl der Eingabetaste drücken, um, Surround ersetzt, was < p sollte > und </p > mit^M.

Meine Linie sieht aus wie^Mtext hier^M

ich den Charakter als Zeilenende erkennen, aber ich verstehe nicht, warum Surround wird nicht meine Linie mit dem Code wickeln Sie es in dem Terminal zeigt (die ist korrekt), sondern umschließt meine Zeile mit DOS-Zeilenenden.

Ich benutze gVIM auf Windows XP, wenn das einen Unterschied macht.

Antwort

0

Es ist eigentlich, weil <p> nicht wirklich da ist, wenn Sie den Befehl mit .

Versuchen Sie dies wiederholen: Bevor Sie den Befehl wiederholen mit . ersten o traf die Befehlszeile Bereich von Text zu leeren, drücken Sie dann .

Sie werden sehen, dass es tatsächlich leer ist, weshalb der Cursor auf dem ersten Zeichen steht.

Um das Wrapping richtig zu wiederholen, müssen Sie entweder <p> jedes Mal eingeben oder ein schnelles Makro aufzeichnen.

Macro:ys$<p>

Paste, die in vim, es markieren, und geben "py

Jetzt können Sie das Makro mit @p

+1

Ich akzeptiere deine Antwort, aber ich bin bummed Sie können nicht wiederholen so zu verwenden. Das Aufnehmen und Ausführen eines Makros bedeutet mindestens 4 weitere Striche als nur für "." –

+0

Das ist schade, ja. Ich denke, dass jrdioko mit seinem Feature-Request-Vorschlag eine gute Idee hat. –

1

surround.vim ‚s Dokumentation laufen, sagt:

The "." command will work with ds, cs, and yss if you install repeat.vim, vimscript #2136. 

Also wenn du du bist sing yss sollte es funktionieren, aber anscheinend werden andere Versionen von "ys" nicht unterstützt. Klingt nach einem guten Feature, das man dem repeat.vim Besitzer vorlegen muss.

Verwandte Themen