ভিমে, আমি লাইনের সেটগুলিতে কীভাবে ম্যাক্রো প্রয়োগ করব?


222

আমার কাছে একগুচ্ছ লাইনের ফাইল রয়েছে। আমি একটি ম্যাক্রো রেকর্ড করেছি যা একটি লাইনে অপারেশন করে। আমি ফাইলের বাকী সমস্ত লাইনে সেই ম্যাক্রোর পুনরাবৃত্তি করতে চাই। এটি করার কোনও দ্রুত উপায় আছে?

আমি Ctrl + Q চেষ্টা করেছি, লাইনের একটি সেট হাইলাইট করেছি, এবং @@ টিপছি, তবে এটি কৌশলটি মনে হয় নি to


অফটোপিক প্রশ্ন: আমি ভিআইএম ম্যাক্রো সম্পর্কে সচেতন ছিলাম না (বা সচেতন হতে চাইনি: পি) ভিআইএম ম্যাক্রোগুলিতে আপনার কিছু ভাল "অলস পাঠক" ভিত্তিক লিঙ্ক আছে কি?
অস্কাররায়েজ

অবশ্যই, এটি: oreillynet.com/mac/blog/2006/07/… এটি বেশ ভালভাবে যোগ করে।
জর্দান পারমার

আপনি এটিও পরীক্ষা করতে পারেন: তিনি ভিএম এর ভিতরে থেকে জটিল-পুনরাবৃত্তি
স্যাম

উত্তর:


354

একাধিক / সমস্ত লাইনে ম্যাক্রো চালানোর জন্য প্রাক্তন মোডে সাধারণ কমান্ডটি ব্যবহার করুন :

রেজিস্টার সঞ্চিত ম্যাক্রো সম্পাদন একটি থেকে 10 লাইন 5।

:5,10norm! @a

ফাইলের শেষের মধ্য দিয়ে একটি অন ​​লাইন 5 এ রেজিস্টারে সঞ্চিত ম্যাক্রো কার্যকর করুন।

:5,$norm! @a

রেজিস্টার সঞ্চিত ম্যাক্রো সম্পাদন একটি সব লাইন।

:%norm! @a

সমস্ত লাইন মিলের প্যাটার্নটিতে একটি রেজিস্ট্রারে ম্যাক্রো স্টোর চালিত করুন ।

:g/pattern/norm! @a

চাক্ষুষভাবে নির্বাচিত লাইনে ম্যাক্রোর সম্পাদন করতে, পছন্দসই অঞ্চল নির্বাচন না করা অবধি V এবং j বা k টিপুন । তারপরে :norm! @aনিম্নলিখিত ইনপুট লাইনটি প্রদর্শন করে টাইপ করুন এবং পর্যবেক্ষণ করুন।

:'<,'>norm! @a

প্রবেশ করান : আরও পড়তে ভিমে স্বাভাবিক সহায়তা করুন


1
হ্যাঁ: ভিমে স্বাভাবিকভাবে সহায়তা করুন বা আমি সবে যুক্ত লিঙ্কটি।
বিচারক মেইগার্ডেন

1
কোনও সহ-নন-ইম্যাক ব্যবহারকারীকে সহায়তা করার জন্য কিছু!
বিচারক মেয়েগার্ডেন

48
নিস !! শিক্ষানবিশ টিপ: আপনি চান রেখাগুলি হাইলাইট করতে ভি তারপর জে / কে ব্যবহার করুন, তারপরে কেবল টাইপ করুন:norm! @a
কেভিন বোউরিলিয়ন

7
@ কেভিনবউরিলিয়ন থেকে খুব সহায়ক টিপ যুক্ত করার জন্য, :লাইনগুলি হাইলাইট করার পরে টিপানোর সময় এক্স ইনপুট লাইনটি পরিবর্তে পড়বে :'<,'>যা আপনি কেভিনের পরামর্শ অনুসারে বাকী অংশটি যুক্ত করবেন। এই চূড়ান্ত কমান্ড পড়া করতে হবে: :'<,'>norm! @a
দেইউইন

3
@ গাবেমুথার্ট !ব্যবহারকারীদের কীগুলি পুনর্নির্মাণকে এড়িয়ে চলে। আপনার এটির প্রয়োজন নাও হতে পারে তবে একটি উত্তর যা সবার জন্য কাজ করে এটির প্রয়োজন।
বিচারক মেগারডেন

60

'প্যাটার্ন' ধারণ করে এমন সমস্ত লাইনে ম্যাক্রো 'এ' চালাতে গ্লোবাল ব্যবহার করুন

:g/pattern/normal! @a

সাহায্যের জন্য, চেক করুন: :help global


4
কেবল ভবিষ্যতের ব্যবহারকারীদের স্পষ্টতার জন্য: এটি একটি গ্লোবাল প্রাক্তন কমান্ড।
ATP

39

আপনি এটি করতে পারেন:

সাধারণ মোডে:

[number of times to apply the macro] @ [register]

উদাহরণ স্বরূপ:

1000@q

পরবর্তী 1000 লাইনে রেজিস্টার কি-তে ম্যাক্রোকে আপেল করুন।

আপডেট: গৃহীত উত্তরটি আরও অনেক ভাল

আপডেট: @ কেভিনলিউ যেমন উল্লেখ করেছেন, আপনি সম্ভবত jপরবর্তী লাইনে যাওয়ার জন্য ম্যাক্রোটি শেষ করতে চান ।


4
এটি শেষ লাইনে থামবে, এবং সর্বশেষ লাইনে একাধিক সময় কার্যকর করবে না, যা আমি ভীত ছিলাম।
হুব্রো 2'15

@ হুব্রো, অন্যান্য ব্যবহারকারীর এই উত্তরগুলি আমার পক্ষে কাজ করেছে: :%norm! @aএবংvGG :norm! @a
ম্যাক্স হেইবার

2
কিছু কারণে, এটি দুর্দান্তভাবে কাজ করেছে, এবং গৃহীত উত্তরটি কার্যকর হয়নি। আমার ম্যাক্রো একটি নতুন লাইন সন্নিবেশ করা, স্টাফ করা এবং পরবর্তী লাইনে যাওয়ার সাথে জড়িত।
জেসনঝাঁও

@ জেসনসভাও হ্যাঁ এখানেই। তবে কি এখনও যাইহোক 1000 না বলা সমস্ত পংক্তি শেষ
অবধি আছে

2
আমি মনে করি এটি নির্দেশ করা উচিত যে আপনার ম্যাক্রোর অবশ্যই jপরবর্তী লাইনে যেতে একটি আদেশ দিয়ে শেষ করা উচিত অন্যথায় এটি একই লাইনে প্রয়োগ করার চেষ্টা করবে।
কেভিন লিউ

2

রেঞ্জম্যাক্রো নামে একটি প্লাগইন রয়েছে, আপনি যা চান ঠিক তেমন করে! প্রত্যেকের জন্য যা নামের দ্বারা অনুমান করতে পারে না, এটি কী করে: এটি নির্দিষ্ট রেঞ্জের প্রতিটি লাইনের জন্য একটি রেকর্ডকৃত ম্যাক্রোর পুনরাবৃত্তি করে, ভিজ্যুয়াল নির্বাচনের দ্বারা বা একটি: 40,50 /: 10

Http://www.vim.org/scriptts/script.php?script_id=3271 দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.