Vim খালি লাইন মুছুন


674

ভিমের ফাঁকা লাইন সরানোর জন্য আমি কোন আদেশটি চালাতে পারি?

উত্তর:


1232
:g/^$/d

:gরেজেক্সের সাথে মিল পাওয়া লাইনে একটি কমান্ড কার্যকর করবে। রেজেক্সটি 'ফাঁকা রেখা' এবং কমান্ডটি হ'ল :d(মুছুন)


38
ধন্যবাদ আত্মাহীন। এটি আমার প্রিয় উত্তর, যেহেতু এটি আসলে ব্যাখ্যা করে: জি কমান্ডটি কী করে।
টিম সোয়াস্ট

4
এটি সমস্ত খালি লাইন মুছে ফেলবে (কোনও সাদা স্থানের অক্ষর ধারণ করে না ..) তবে এটি অনন্য প্রয়োজন হতে পারে না। কেউ এখনও একটি খালি লাইন রাখতে পারেন। :%!cat -sপছন্দ হতে পারে ..
coanor

2
: জি / ^ \ এস * $ / ডি লাইনে 'যে কোনও সম্ভাব্য স্পেস চর' এর
রেইজেক্স সহ

180

এটি পেয়েছি, এটি:

g/^\s*$/d

উত্স: জি উইম উইকিয়া পাওয়ার

সংক্ষিপ্ত ব্যাখ্যা :g

:[range]g/pattern/cmd

এটি প্রতিটি রেখার মিলের প্যাটার্নের জন্য এক্স কমান্ড সিএমডি এক্সিকিউট করে নির্দিষ্ট [রেঞ্জ] (ডিফল্ট পুরো ফাইল) এ কাজ করে (একটি প্রাক্তন কমান্ড হ'ল মুছে ফেলার মতো কোলন দিয়ে শুরু করা হয় )। চালানোর আগে cmd কমান্ড , " " বর্তমান লাইন সেট করা হয়।:d.


9
খুশী হলাম। তবে ঠিক ফাঁকা লাইন নয়।
innaM

13
আহ, হ্যাঁ, এটি কেবল সাদা বর্ণের অক্ষর যুক্ত লাইনগুলির সাথে মিলবে। আমি আত্মাহুতির উত্তর গ্রহণ করব।
প্রায়_লঞ্চটাইম

16
যেটি ফাঁকা রেখাগুলি এবং কেবলমাত্র শ্বেতস্পেসের সমন্বিত লাইনগুলির সাথে মেলে ... (* শূন্যের সাথে একাধিক উদাহরণের সাথে মেলে ...)?
মনোজোহনি

14
আমি খাঁটি হোয়াইটস্পেস যুক্তি দিয়ে বলব যে একেবারে ফাঁকা রেখা, যদিও কোনও শ্বেত স্পেসটি খালি রেখার চেয়ে বেশি কিছু নয়, তাই না? ;)
কাসাপো

4
অক্সফোর্ড বলেছে যে একটি ফাঁকা স্থান "নথিতে পূরণের জন্য একটি জায়গা বাকি"। আপনি যেভাবে ব্যাখ্যা করতে পারেন তা ব্যাখ্যা করুন তবে এটি আমি ঠিক খুঁজছিলাম। ধন্যবাদ!
জো ট্রিকারিকো

53
:v/./d

অথবা

:g/^$/d

অথবা

:%!cat -s

7
: V /./ d (টাইপ করা সহজ) এর সাথে ঝরঝরে কৌশল তবে তার পরে আপনাকে একটি করতে হবে: nohl after।
ক্লেস মোগরেন

1
@ ক্লাইজমোগ্রেন বা কন্ট্রোল-এল
জেএম 3

6
@zladuric অনুযায়ী vim.wikia.com/wiki/Power_of_g এটা বিপরীত বিশ্বব্যাপী (তাই সবকিছু সাথে মেলে না কমান্ড আছে)
adam_0

44

নিম্নলিখিতগুলি কেবলমাত্র বহুগুলি ফাঁকা রেখা সরানোর জন্য (এগুলিকে একটি ফাঁকা রেখায় হ্রাস করতে) এবং একক ফাঁকা রেখা অক্ষত রেখে দিতে ব্যবহার করা যেতে পারে:

:g/^\_$\n\_^$/d

3
টোকেনের অর্থ কি কেউ ব্যাখ্যা করতে পারেন? (সুতরাং, এটি কীভাবে কাজ করে?) ধন্যবাদ
পাসআলওড

5
\_$এর অর্থ লাইনটির শেষ প্রান্ত যা কোনও প্যাটার্নের অভ্যন্তরে ব্যবহার করা যেতে পারে ( $কেবল প্যাটার্নের শেষে ব্যবহার করা যেতে পারে)) একই \_^অর্থ একটি রেখার সূচনা এবং প্যাটার্নের অভ্যন্তরে যে কোনও জায়গায় ব্যবহার করা যেতে পারে। সুতরাং, প্যাটার্নটি খালি লাইন, একটি নতুন লাইন এবং আবার একটি খালি লাইনের সাথে মেলে। দেখুন তেজ সহায়তা পৃষ্ঠা Regex
উইক্টর স্ট্রিবিউ

1
এটি করার আরেকটি উপায়::g/^$/,/./-j
সেরজিওআরাউজো

14
  1. কিভাবে সমস্ত ফাঁকা লাইন সরিয়ে ফেলুন

    :%s,\n\n,^M,g
    

    (এই একাধিক বার ব্যবহার করে সমস্ত খালি লাইন চলে গেল)

  2. কীভাবে সমস্ত ফাঁকা রেখাগুলি সিংকে ফাঁকা রেখা ছেড়ে যাবে

    :%s,\n\n\n,^M^M,g
    

    (এটি একাধিক বার করুন)

  3. ম্যাক্সিমামে TWO খালি লাইন রেখে সমস্ত ফাঁকা লাইন কীভাবে সরিয়ে ফেলতে হবে,

    :%s,\n\n\n\n,^M^M^M,g
    

    (এটি একাধিক বার করুন)

^ এম ইনপুট করতে, আমাকে উইন্ডোতে কন্ট্রোল-কি এবং কন্ট্রোল-এম করতে হবে


2
আপনি \rএর জায়গায় ব্যবহার করতে পারেন Ctrl-M
ড্যাশ-টম-ব্যাং

6

কেমন:

:g/^[ \t]*$/d

5

ভিম মধ্যে পার্ল সঙ্গে কাজ:

:%!perl -pi -e s/^\s*$//g


আমার পার্ল কিছুটা মরিচা হতে পারে, তবে কাজটিও করবে না chomp?
কে কে কোয়ান


5

এই ফাংশনটি কেবল দুটি বা ততোধিক ফাঁকা লাইন সরিয়ে দেয়, নীচে আপনার ভিআমআরসি-র রেখা রাখবে, তারপরে ফাংশন কল করতে \ d ব্যবহার করুন

fun! DelBlank()
   let _s=@/
   let l = line(".")
   let c = col(".")
   :g/^\n\{2,}/d
   let @/=_s
   call cursor(l, c)
endfun
map <special> <leader>d :keepjumps call DelBlank()<cr>

4

আমি এই পৃষ্ঠায় কয়েকটি উত্তর চেষ্টা করেছি, কিন্তু তাদের মধ্যে অনেকগুলি আমার পক্ষে কার্যকর হয়নি। সম্ভবত কারণ আমি উইন্ডোজ on এ ভিম ব্যবহার করছি (উপহাস করবেন না, কেবল আমার প্রতি করুণা করুন: পি)?

উইন্ডোজ in-এর ভিমে কাজ করে এমনটি আমি সবচেয়ে সহজ খুঁজে পেয়েছি:

:v/\S/d

এখানে ভিম উইকিয়ায় একটি দীর্ঘ উত্তর দেওয়া হয়েছে: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines


3
:g/^\s*$/d
^ begin of a line
\s* at least 0 spaces and as many as possible (greedy)
$ end of a line

পেস্ট করুন

:command -range=% DBL :<line1>,<line2>g/^\s*$/d

আপনার .vimrc এ, তারপরে আপনার ভিম পুনরায় চালু করুন। আপনি যদি কমান্ডটি ব্যবহার করেন: 5,12DBL এটি 5 তম সারি এবং 12 তম সারির মধ্যে সমস্ত ফাঁকা রেখা মুছে ফেলবে। আমার উত্তর আমার সেরা উত্তর!


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

এখানে আসলেই কিছু আসে যায় না। এই প্রশ্নটি 5 বছর আগে একটি উত্তর গ্রহণ করেছে
টিম

আমি মনে করি আত্মার জলের উত্তর: g / ^ $ / d সেরা উত্তর নয় and এবং আমি তার উত্তরটি উন্নত করতে সম্পাদনা করছি: g / ^ \ s * $ / d। তবে কেন আমি এই সম্পাদনাটি "এই পোজে সমস্ত সম্পাদনা দেখান" তে দেখতে পাচ্ছি না?
cn8341

আমার উত্তর তার উত্তরের চেয়ে ভাল এবং আমার উত্তর কে প্রত্যাখ্যান করেছে এবং কেন আমার উত্তর প্রত্যাখ্যান করা হয়েছে?
cn8341

2

যদি কোনও কিছু আপনার পাঠ্যকে দ্বিগুণ করে তোলে তবে এই কমান্ডটি দ্বৈত ব্যবধান সরিয়ে ফেলবে এবং প্রাক-বিদ্যমান পুনরাবৃত্তি ফাঁকা রেখাগুলিকে একক ফাঁকা লাইনে মার্জ করবে। এটি একটি লাইনের শুরুতে ^^^ এর একটি অস্থায়ী সীমানা ব্যবহার করে তাই যদি আপনার সামগ্রীর সাথে এই সংঘাত হয় অন্য কিছু চয়ন করে। কেবল শ্বেতস্থানযুক্ত রেখাগুলি ফাঁকা হিসাবে গণ্য করা হয়।

%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*

2

deleteফাঁকা লাইনগুলি সরাতে সন্নিবেশ মোডে কী টিপুন ।


1

এটি আমার পক্ষে কাজ করেছে:

:%s/^[^a-zA-Z0-9]$\n//ig

এটি মূলত সমস্ত লাইন মুছে ফেলা হয় যার একটি নম্বর বা অক্ষর নেই। যেহেতু আমার তালিকার সমস্ত আইটেমের চিঠি ছিল তাই এটি সমস্ত ফাঁকা রেখা মুছে ফেলে।

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