আমি কীভাবে ভিমে প্রতিটি ব্লকের প্রথম লাইনে একাধিক ব্লকের পাঠ্য বাছাই করব?


11

আমার কাছে পাঠ্যের একাধিক ব্লক রয়েছে, বা অন্য কথায়, একাধিক ফাংশন রয়েছে:

def ==(other)
  ...
end

def to_s(full=false)
  ...
end

def to_a
  ...
end

def to_hash
  ...
end

def inspect
  ...
end

আমি ফাংশন স্বাক্ষর দ্বারা ফাংশনগুলি বর্ণানুক্রমিকভাবে বাছাই করতে চাই। এটি কীভাবে খুব সহজেই ভিমে করা যায়?


দয়া করে ফাংশন স্বাক্ষরের দ্বারা আপনার অর্থটি নির্ধারণ করুন। এগুলি কী ধরণের কাজ? এছাড়াও, ওএস, বিতরণ এবং সংস্করণ নম্বরগুলির অধীনে আপনি কোন প্ল্যাটফর্মের উপর কাজ করছেন তা খুব সহায়ক হবে।
এমডিপিসি

1
কেন এটি ভিআইএম এ করতে হবে? এখানে দুর্দান্ত বিল্টিন ইউনিক্স / লিনাক্স ইউটিলিটি রয়েছে যা এই ধরণের জিনিসগুলির জন্য সহজেই একসাথে আবদ্ধ হতে পারে .... বিশ্রী মনে আসে।
এমডিপিসি

@ এমডিপিসি: ফাংশনের স্বাক্ষর দ্বারা আমি কেবল লাইনটি বোঝায় def ...। আমি লিনাক্সে আছি, সুতরাং সেই সমস্ত ইউটিলিটি আমার পক্ষে কাজ করবে।
হুব্রো

উত্তর:


12

এটি তুলনামূলকভাবে সহজ (এবং, আমি বিশ্বাস করি, জেসন যা মনে রেখেছিলেন তার কাছাকাছি):

  1. কিছু অভিনব চরিত্রের সাথে সমস্ত নিউলাইন প্রতিস্থাপন করে আপনার সমস্ত ফাংশনকে এক লাইনে পরিণত করুন:

    :g/def/,/end/s/\n/§
    
  2. এই এক লাইনার এর সাথে বাছাই করুন:

    :%sort
    
  3. আপনার সমস্ত ক্রিয়াকলাপগুলি তাদের প্রাথমিক পৃথক অবস্থায় ফিরে যান:

    :g/def/s/§/\r
    

1
একইভাবে, ফাঁকা রেখা অনন্য বিভাজক হিসেবে বিবেচনা করা যেতে পারে, তাহলে এটি সঙ্গে সম্পন্ন করা যেতে পারে :g/./,/^$/-s/\n/§/g, এবং তারপর :%sort, এবং তারপরs/§/\r/g
ArtBIT

3

@ রোমেনেলের উত্তরে প্রদত্ত তিনটি পৃথক পদক্ষেপকে একটি একক কমান্ডে সহজ করার জন্য আমি অ্যাডভান্সডরস প্লাগইন লিখেছি :

:SortRangesByRange /^def\>/,/^end\>\_s*\zs$/

পৃথকীকরণ খালি রেখাগুলি সঠিকভাবে অন্তর্ভুক্ত করার জন্য এখানকার প্যাটার্নটি কিছুটা জটিল।


দ্রষ্টব্য: আপনার বর্তমানে এটির জন্য মোটামুটি নতুন ভিম 7.4.218 লাগবে; আমি একটি আপডেট সরবরাহ করব যা শীঘ্রই পুরানো ভিম সংস্করণগুলিকে সমর্থন করে।
ইনগো কারকাত

2

সংজ্ঞাটি বিশ্লেষণ করে কোন ফাংশন না লিখে আমি এটি করার সর্বোত্তম endউপায়টি হ'ল, অন্য কোনও অনন্য ডিলিমিটার (+ ইওল +?) এর আগে লাইন ডিলিমিটারগুলি এবং তারপরে :sortপুনরায় প্রতিস্থাপনকারীকে প্রতিস্থাপন করে itute এটি সম্ভবত ম্যাক্রোতে রেকর্ড করা যেতে পারে।

আপনি ভিজ্যুয়াল নির্বাচনটি ব্যবহার করতে চান সেই ক্ষেত্রে একটি ফাংশনটি আরও ভাল হতে পারে।


2

ভিসর্ট প্লাগইন ব্যবহার করে দেখুন। এটি একটি ব্লক বাছাই সুবিধা সমর্থন করে:

  • : '<'> বিএস পরের ব্লক এন্ডব্লক ফাইন্ডট্যাগ ট্যাগপ্যাট ট্যাগসব
  • : [রেঞ্জ] কল করুন ব্লকসোর্ট (পরের ব্লক, এন্ডব্লক, ফাইন্ডট্যাগ, ট্যাগপ্যাট, ট্যাগসব)

যদি কোনও যুক্তি অনুপস্থিত থাকে তবে ব্লকসোর্ট () তাদের জন্য আপনাকে জিজ্ঞাসা করবে। নেক্সটব্লক / এন্ডব্লক নিদর্শনগুলি একটি ব্লক সীমিত করে, ফাইন্ডট্যাগ প্যাটার্নটি একটি "ট্যাগ" যুক্ত একটি লাইন খুঁজে বের করতে ব্যবহৃত হয় যা বাছাইয়ের জন্য ব্যবহৃত হবে; ট্যাগপাট এবং ট্যাবসব ট্যাগ-যুক্ত লাইন থেকে বাছাই ট্যাগ বের করতে বিকল্পের জন্য ব্যবহৃত হয়।

আপনি http://www.drchip.org/astronaut/vim/index.html#VISSORT থেকে ভিসর্ট.ভিম পেতে পারেন

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