ভিমের প্রতি দ্বিতীয় লাইনে কীভাবে যোগদান করবেন?


28

আমি প্রচুর (1000 ডলার) লাইনে যোগ দিতে চাই, তবে পরেরটির সাথে কেবলমাত্র প্রতিটি বিজোড়ই। হাতে করেই করতে পারলাম

Jj

500 বার এবং এটি সম্পন্ন হয়েছে। যাইহোক, আমি কীভাবে একটি একক কমান্ডে 500 বার এই দুটি বিবৃতি কার্যকর করতে পারি? টাইপিং

500Jj

পরবর্তী 500 লাইনগুলিতে যোগদান করবে এবং তারপরে একটি লাইনটি নীচে চলে যাবে।

উদাহরণ:

আমার আছে:

a
b
c
d
e
f
g
h

আমি চাই:

a b
c d
e f
g h

সম্পাদনা: আমি ম্যাপিংয়ের চেষ্টা করেছি:

:map X Jj
500X

তবে স্পষ্টতই আমার আবার ম্যাপিং ডক্সটি পড়া উচিত। কাজ করে না।

উত্তর:


30

আমি এটি করব:

  1. একটি ম্যাক্রো 'কি' রেকর্ডিং শুরু করুন: qqJjq

  2. ম্যাক্রো 'কিউ' 500 বার রিপ্লে করুন: 500@q

(আসলে এটি 'কিউ' নামক কোনও ম্যাক্রো নয়, এটি 'কিউ' নামে পরিচিত একটি নিবন্ধক। ইন্টারেক্টিভভাবে সেই রেজিস্টারটি পূরণ করার পরিবর্তে ১. এর মতো, আপনিও করতে পারেন :let @q = "Jj"এবং তারপর ২ করতে পারেন)


দুর্দান্ত, আমাকে ম্যাক্রো মনে রাখার জন্য ধন্যবাদ!
বোল্ডউইন

:% সাধারণ জে খুব দ্রুত এবং সহজ ছিল (নীচের ২ য় শীর্ষ সমাধান দেখুন) ... এটি এই ম্যাক্রো সমাধানটির তুলনায় এটি 50,000 এর বেশি লাইনে
চালিত হয়েছে

@ আই হাইটওয়ার এই কারণেই আমি সেই উত্তরটিকেও উজ্জীবিত করেছি। 6 বছর আগে :)
আকির

@ ম্যাকরা আপনার ম্যাক্রো আমার দিনটি কেবলমাত্র সংরক্ষণ করেছে কারণ আমার প্রয়োজন ছিল এই ভিন্ন ম্যাক্রোর সমাধানের জন্য আজ অন্য উদ্দেশ্যে।
ihightower

24

ফাইলের প্রতিটি লাইনে এটি করতে:

:%normal J

বা, সংক্ষিপ্ত:

:%norm J

ফাইলের কেবলমাত্র একটি অংশে এটি করতে লাইনগুলি নির্বাচন করুন Vবা অন্য কোনও উপায়ে পান:

:'<,'>global/^/normal J

বা, সংক্ষিপ্ত:

:'<,'>g/^/norm J

কেভিন তিনি কেবল একটি নয়, প্রতিটি ফাইলে দুটি কমান্ড চালাচ্ছেন।
জেএনকে

1
:gউত্তর ওপি প্রয়োজন ব্যবহার ।
লুক হার্মিটে

2
এটি অবশ্যই প্রতিটি দ্বিতীয় লাইনে যোগদান করবে। চেষ্টা করে দেখুন!
কেভিন প্যাঙ্কো

globalকৌতুক জন্য ধন্যবাদ । আমার ক্ষেত্রে যাইহোক, ম্যাক্রো রেকর্ডিং সহজ এবং দ্রুত ছিল।
বোলডউইন

2
একটি অনুমান - এটি প্রতিটি লাইনে কমান্ডটি কার্যকর করে এবং প্রথম লাইনটি করার পরে, দ্বিতীয় লাইনটি এখন চলে গেছে (প্রথম লাইনের সাথে যোগ দেওয়া হয়েছে), সুতরাং এটি তৃতীয় লাইনে যেতে বাধ্য হয়।
কেভিন পানকো

9

এই সম্পর্কে কি:

:g/$/j  

অথবা

:g/$/j!  

এবং প্রতি তিনটি লাইনে গ্রুপ করুন

:g/$/j3 

1
এটি একটি খুব সুন্দর সমাধান মিরো। এটি আরও ভাল যে আপনি এটি স্ট্যান্ডার্ড vi তেও ব্যবহার করতে পারেন, যদিও আশ্চর্যের বিষয়, আপনি যখন এসভিআর ৪.০ vi তে সোলারিস হিসাবে ব্যবহার করেন তখন 3 টি কলাম তৈরির পরিবর্তে এটি 4 করে তোলে (যাতে আপনার ব্যবহারের প্রয়োজন প্রতি 3 লাইনে গ্রুপিংয়ের জন্য সেখানে জে 2)
জনজিএইচ


-1

আমি ভিমের ব্যবহারকারী নই, তবে অনলাইন ডক্সটি দেখতে দেখতে দেখতে এটি পরীক্ষা করে নিচ্ছি

500(Jj) 

এটি কাজ করতে পারে যেহেতু এটি ইউনিট হিসাবে বন্ধনীগুলির অন্তর্ভুক্ত জিনিসগুলিকে পার্স করে।


এইচএম, চেষ্টা করার জন্য ধন্যবাদ, তবে আমার সংস্করণে ভিম কেবল বন্ধনীগুলি উপেক্ষা করে। আপনি কি আমাকে এই লিঙ্কটি বলতে পারেন যেখানে আপনি এই বাক্য গঠনটি পেয়েছেন?
বোলডউইন

1
vimdoc.sourceforge.net/htmldoc/syntax.html - দুঃখিত, এটি সাহায্য করেনি!
জেএনকে

প্রকৃতপক্ষে এই লিঙ্কটি পরীক্ষা করুন: vim.org/scriptts/script.php?script_id=2136 দেখুন এটি আপনার পরে কী করছে তা দেখুন।
জেএনকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.