كيف يمكنني الحصول على متغير عداد في VIM بدون بيثون أو روبي؟

StackOverflow https://stackoverflow.com/questions/895663

  •  23-08-2019
  •  | 
  •  

سؤال

ليس لدي مكنت ثعبان / روبي. سؤالي: كثيرا ما يجب أن أكتب أشياء مثل ما يلي:

%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;

هل هناك طريقة سريعة للقيام بذلك في VIM؟

عادة ما اكتب:

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

ثم قم بإصدار الأوامر التالية:

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

لذلك بمعنى آخر، قمت بلصق السطر 11 مرة، ثم استخدم الأمر "استبدال char" عبر قائمة التواريخ. ثم سأنسخ الكتلة كلها وفي الكتلة الجديدة سوف تكتب

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

لاستبدال 2007 لعام 2008 في الكتلة الثانية.

VIM هو مجرد أقوياء الشكل الأول يجب أن يكون هناك طريقة أفضل ثم استبدالها باستمرار 1 إلى 12 على كل من الخطوط.

هل كانت مفيدة؟

المحلول

اكتب السطر الأول:

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

ثم، في حين لا يزال على هذا الخط، انتقل إلى وضع الأوامر وتسجيل ماكرو أ التي تنسخ الخط (yyp)، بزيادات الرقم الأول (CTRL-A، مكتوب ^A)، يتحرك شخصية واحدة إلى اليمين (l) ثم تزيد الرقم الآخر:

qayyp^Al^Aq

(لاحظ أن بدء تشغيل وإيقاف تسجيل الماكرو يحدث q.) العب الآن ماكرو أ 110 مرة:

110@a

نصائح أخرى

يمكن أيضا القيام به مع وظائف VIM 7:

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

إذا كان لديك الأدوات المساعدة الأساسية UNIX / Linux الأساسية عند التصرف الخاص بك، فهناك طريقة أسهل في تذكرها، على الأقل إذا كنت معتادا على استخدام أوامر Block:

(1) توليد التسلسل باستخدام SEQ (1)

:r!seq 200801 200812

يسمح SEQ أيضا تكوين مثل هذا:

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

يجب أن يتم هرب علامة النسبة المئوية.

(2) ضعف هذه الكتلة مع أوامر كتلة vim: علامة مع السيرة الذاتية، يانك، وضع

(3) إدراج (أو إلحاق) النص بين هذه الكتل: علامة مع السيرة الذاتية، إدراج معي

انظر: مساعدة في خلع البقاع - المرئي لأكثر من ذلك.

انظر أيضا Vimtip # 150..

يشرح هذا كيفية وضع علامة على كتلة من النص وزيادة الأرقام تلقائيا في الكتلة المميزة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top