Frage

Ich habe nicht Python / Rubin aktiviert. Meine Frage: Ich habe zu oft Dinge schreiben wie folgt aus:

%macro(200701);x gzip /home/test/200701.txt;run;
%macro(200702);x gzip /home/test/200702.txt;run;
%macro(200703);x gzip /home/test/200703.txt;run;
%macro(200704);x gzip /home/test/200704.txt;run;
%macro(200705);x gzip /home/test/200705.txt;run;
%macro(200706);x gzip /home/test/200706.txt;run;
%macro(200707);x gzip /home/test/200707.txt;run;
%macro(200708);x gzip /home/test/200708.txt;run;
%macro(200709);x gzip /home/test/200709.txt;run;
%macro(200710);x gzip /home/test/200710.txt;run;
%macro(200711);x gzip /home/test/200711.txt;run;
%macro(200712);x gzip /home/test/200712.txt;run;

%macro(200801);x gzip /home/test/200801.txt;run;
%macro(200802);x gzip /home/test/200802.txt;run;
%macro(200803);x gzip /home/test/200803.txt;run;
%macro(200804);x gzip /home/test/200804.txt;run;
%macro(200805);x gzip /home/test/200805.txt;run;
%macro(200806);x gzip /home/test/200806.txt;run;
%macro(200807);x gzip /home/test/200807.txt;run;
%macro(200808);x gzip /home/test/200808.txt;run;
%macro(200809);x gzip /home/test/200809.txt;run;
%macro(200810);x gzip /home/test/200810.txt;run;
%macro(200811);x gzip /home/test/200811.txt;run;
%macro(200812);x gzip /home/test/200812.txt;run;

Gibt es eine schnelle Möglichkeit, dies in Vim zu tun?

Ich werde in der Regel ein:

%macro(200701);x gzip /home/test/200701.txt;run;

Dann geben Sie die folgenden Befehle ein:

yy11p10<up>13<right>r2<down>r3<down>r4<down>...

Also mit anderen Worten ich der Linie 11 weitere Male einfügen, dann ist die „ersetzen char“ mit Befehl über die Liste der Daten führen. Dann werde ich den ganzen Block und in den neuen Block wird Typ kopieren

:s/2007/2008/<enter>12&11<up>12&

ersetzen, 2007 für das Jahr 2008 im zweiten Block.

Vim ist nur so stark, ich meine, es einen besseren Weg dann 1 bis 12 ständig manuell sein muss, auf jeder der Leitungen ersetzt werden.

War es hilfreich?

Lösung

Schreiben Sie die erste Zeile:

%macro(200701);x gzip /home/test/200701.txt;run;

Dann, während immer noch auf dieser Linie, in den Befehlsmodus gehen und ein Makro aufzeichnen a , dass Kopien der Linie (yyp), erhöht die erste Nummer (ctrl-a, geschrieben ^A), bewegt sich ein Zeichen nach rechts (l) und erhöht dann die andere Zahl:

qayyp^Al^Aq

(Beachten Sie, dass das Starten und Stoppen der Makroaufzeichnung geschieht mit q.) Nun Makro spielen a 110 mal:

110@a

Andere Tipps

Es kann auch mit vim 7 Funktionen durchgeführt werden:

:let t=map(range(200801,200815), '"macro(".v:val.");x gzip /home/test/".v:val.".txt;run;"')
:put=t

Wenn Sie die Unix / Linux Core Utilities zu Ihrer Verfügung haben, gibt es eine Möglichkeit, die leichter zu merken ist, zumindest, wenn Sie zu verwenden, sind es gewohnt, Blockbefehle:

Generieren

(1) die Sequenz Seq mit (1)

:r!seq 200801 200812

seq erlaubt auch Formatierungen wie folgt aus:

:r!seq -f "\%03.0f"  10 121

Das Prozentzeichen müssen maskiert werden.

(2) Verdoppeln Sie diesen Block mit den Blockbefehle Vim: Mark mit C-v, yank, legte

(3) Setzen (oder anhängen), um den Text zwischen diesen Blöcken: Mark mit C-V, legen Sie mit I

. Siehe: Hilfe blockartig Vision für mehr

Siehe auch Vimtip # 150 .

Dies erklärt, wie ein Textblock markieren und automatisch die Zahlen im markierten Block erhöhen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top