ভিম মধ্যে অনুচ্ছেদের ভিতরে লাইন যোগদান করুন


13

ধরুন আপনি স্বয়ংক্রিয় লাইন ব্রেকিং দিয়ে ভিমে একটি দীর্ঘ দস্তাবেজ টাইপ করেছেন, সুতরাং, সমস্ত লাইন broken৯ টি অক্ষরে বিভক্ত হয়ে গেছে। আপনি এমনকি দৈর্ঘ্যের সমস্ত লাইন ভাঙ্গতে পুরো দস্তাবেজে ফর্ম্যাটিং প্রয়োগ করতে পারেন।

অনুচ্ছেদে ফাঁকা রেখাগুলি দ্বারা আপনার দস্তাবেজে সীমাবদ্ধ করা হয়েছে।

এখন আপনি স্থির করেন যে আপনি কোনও অনুচ্ছেদে লাইন বিরতি চান না।

অনুচ্ছেদের সীমানা পুরোপুরি বাদ না দিয়ে আপনি কীভাবে অনুচ্ছেদে সমস্ত লাইন বিরতিগুলি সরিয়ে ফেলতে পারেন?

আমি এই দ্রুত এবং বুদ্ধিমান হ্যাক তৈরি করেছি, তবে সঠিক উপায়টি খুঁজছি।

:%s/^\s*$/@@@@@ - replace blank lines with @@@@@
ggVGgJ           - join all lines in the file
:%s/@@@@@/\r\r/g   - replace @@@@@ with line breaks

আরে, আপনার সলিউশনটি যদি কাজ করে এবং আপনার সমাধানটি কাজ করে তবে এটিকে ঠকবেন না।
pdwalker

উত্তর:


12

আমি মনে করি এটি আপনি যা চান তা করেন: ফাইলটির শেষে একটি ফাঁকা লাইন আছে তা নিশ্চিত করুন, তারপরে প্রতিটি অনুচ্ছেদে যোগদান করুন (খালি রেখার দ্বারা অবসান ঘটিয়ে)।

G:a

.
:g/^./ .,/^$/-1 join

ব্যাখ্যা: প্রথমে ফাইলের শেষে যান এবং এর সাথে একটি অতিরিক্ত খালি লাইন যুক্ত করুন :a(এটি করার জন্য আরও একটি মার্জিত উপায় রয়েছে; ইন্টারেক্টিভভাবে, আপনি প্রথম তিনটি লাইন এর সাথে প্রতিস্থাপন করতে পারেন o<ESC>)। তারপরে, প্রতিটি অ-ফাঁকা রেখার জন্য যা এখনও বিবেচনা করা হয়নি ( :g/^./), joinনির্বাচিত লাইনের ( .) থেকে শুরু হওয়া এবং পরবর্তী ফাঁকা লাইনের ( /^$/-1) এর আগে একটি লাইন শেষ করে কমান্ডটি প্রয়োগ করুন ।

Allyচ্ছিকভাবে, :g/^$/dআপনি যদি কোনও ফাঁকা রেখা না চান (তবে আপনি এটিটি সরিয়ে ফেলতে পারেন -1)।


ধন্যবাদ। এটি আমার খুব কাছে চলেছে, তবে এটি অনুচ্ছেদের মধ্যে ফাঁকা রেখাগুলি মুছে ফেলছে। (আমি ফাইলফর্ম্যাট ইউনিক্স এবং ডস চেষ্টা করেছি এটি কোনও উইন্ডোজ জিনিস কিনা তা দেখার জন্য) এছাড়াও, আপনি কমান্ডগুলি কিছুটা অনুবাদ করতে পারবেন? জি শেষ লাইনে যায়। : সাহায্য অনুসারে একটি হ'ল "সংযোজন" কিন্তু আমি নিশ্চিত না যে এটি কী করে। এছাড়াও আপনার সেখানে থাকা জি / প্যাটার্ন / সেন্টিমিটার আমাকে হারিয়েছে। হুকুম কি?
dggoldst

@ ডিজিগোল্ডস্ট: আমি খালি লাইন ধরে রাখতে কমান্ড পরিবর্তন করেছি। প্রথম তিনটি লাইন ফাইলের শেষে খালি লাইন যুক্ত করা (অন্যথায় শেষ অনুচ্ছেদটি মিলবে না)। সর্বশেষ কমান্ডটি :g, যা সমস্ত মিলিত লাইনে একটি কমান্ড প্রয়োগ করে; দেখুন :help :gএবং সম্ভবত আপনি যখন লাইন ব্রেকগুলি মুছবেন তখন এই থ্রেডটি কীভাবে :gআচরণ করে
গিলস 'অশুভ হওয়া বন্ধ করুন'

:$pu _ শেষে ব্ল্যাকহোল রেজিস্টার রাখুন, যার ফলশ্রুতি শেষে ফাঁকা লাইন তৈরি হয়।
সেরজিওআরাউজো

12

এটি করা উচিত:

:set tw=99999
gggqG

twদীর্ঘতম অনুচ্ছেদে অক্ষরের সংখ্যা হিসাবে কমপক্ষে বৃহত্তর কিছু মানকে সেট করা হয়েছে। ggকার্সারটিকে প্রথম লাইনে নিয়ে যায়; gqপুনর্নির্মাণের আদেশ; Gকার্সারটিকে শেষ লাইনে নিয়ে যায়, gqবর্তমান কার্সারের অবস্থান থেকে শেষ লাইনে পুনরায় ফর্ম্যাট করতে বলে ।


5
  1. পছন্দসই অনুচ্ছেদের ভিতরে কার্সারটি সেট করুন

  2. টাইপ করুন: vipJ

( vipবর্তমান অনুচ্ছেদে হাইলাইট করে, Jসমস্ত লাইনে যোগদান করে)


2

এটি করার সবচেয়ে পরিষ্কার উপায় নাও হতে পারে তবে আমি যা ব্যবহার করব তা এখানে:

ggqav}bgJ}wq999@a   # go to the top of the file (gg)
                    # start recording macro "a" (qa)
                    # select the entire paragraph (v})
                    # go back one word so as not to join the blank line (b)
                    # join the selected lines without spaces (gJ)
                    # go to first word of the next paragraph (}w)
                    # finish recording the macro (q)
                    # 999 times (arbitrary number of paragraphs to join)
                    # run macro "a" (@a)

( ভিআইএম .2.২ এ কাজ করে ))

অনুচ্ছেদগুলি যখন মূল ফর্ম্যাট করা হয়েছিল তখন ঠিক কীভাবে বিভক্ত হয়েছিল তার উপর নির্ভর করে আপনি gJকমান্ডটি (স্পেস ছাড়াই যোগদান করুন) Jকমান্ডটি (স্পেসের সাথে যোগ দিয়ে ) প্রতিস্থাপন করতে চাইতে পারেন ।

স্বেচ্ছাসেবী 999গণনা কেবলমাত্র ফাইলের কমপক্ষে অনুচ্ছেদের সংখ্যা হওয়া দরকার - আপনি চাইলে একটি বৃহত সংখ্যা নির্বাচন করতে পারেন এবং প্রসেসরের চক্র ব্যতীত আর কিছুই হারাতে পারেন না। অনুচ্ছেদের মধ্যে একটি এবং কেবল একটি ফাঁকা রেখা ধরে নেওয়া, আপনি ব্যবহার করে আরও নিখুঁত অনুচ্ছেদ গণনা পেতে পারেন:

:%s/^$//gn     # returns "999 matches on 999 lines"

এটি আমার পক্ষে কাজ করে। শুরুতে একটি "জিজি" যুক্ত করা ভাল ফাইলটির শীর্ষে কার্সার রাখার জন্য। এছাড়াও, জিজে এর পরিবর্তে জে ব্যবহার করে পৃথক শব্দ একসাথে ম্যাস করতে পারে না to এটি কেবলমাত্র আমার "ফরম্যাটপশনগুলি" এর মানগুলির ক্ষেত্রেই হতে পারে যা বর্তমানে আমাকে বিস্মিত করছে।
ডিজিগোল্ডস্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.