विम में खाली लाइनों को हटाने के लिए मैं क्या कमांड चला सकता हूं?
विम में खाली लाइनों को हटाने के लिए मैं क्या कमांड चला सकता हूं?
जवाबों:
:g/^$/d
:g
एक पंक्तियों पर एक कमांड निष्पादित करेगा जो एक रेगेक्स से मेल खाता है। Regex 'रिक्त पंक्ति' है और कमांड है :d
(हटाएं)
:%!cat -s
पसंद हो सकता है ..
यह मिला, यह है:
g/^\s*$/d
स्रोत: द पॉवर ऑफ ग्राम पर vim विकिया
की संक्षिप्त व्याख्या
:g
:[range]g/pattern/cmd
यह प्रत्येक लाइन मिलान पैटर्न के लिए पूर्व कमांड cmd निष्पादित करके ( निर्दिष्ट पूरी रेंज) (डिफ़ॉल्ट पूरी फ़ाइल) पर कार्य करता है , (एक पूर्व कमांड एक कोलो के साथ शुरू होता है जैसे कि डिलीट के लिए)। Cmd निष्पादित करने से पहले , " " वर्तमान लाइन पर सेट है।
:d
.
:v/./d
या
:g/^$/d
या
:%!cat -s
निम्नलिखित का उपयोग केवल बहु रिक्त लाइनों को हटाने के लिए किया जा सकता है (उन्हें एक एकल रिक्त पंक्ति में कम करें) और एकल रिक्त लाइनों को बरकरार रखने के लिए:
:g/^\_$\n\_^$/d
\_$
अंत का मतलब है कि एक पैटर्न के अंदर इस्तेमाल किया जा सकता है ( $
केवल पैटर्न के अंत में इस्तेमाल किया जा सकता है।) उसी के साथ एक लाइन की शुरुआत का\_^
मतलब है और पैटर्न के अंदर कहीं भी इस्तेमाल किया जा सकता है। तो, पैटर्न एक खाली रेखा, एक नई रेखा और फिर से एक खाली रेखा से मेल खाता है। विम रेगेक्स सहायता पृष्ठ देखें ।
:g/^$/,/./-j
कैसे सभी रिक्त लाइनों को हटाने के लिए
:%s,\n\n,^M,g
(क्या यह कई बार सभी खाली लाइनों का उपयोग किया गया)
कैसे सभी खाली लाइनों को दूर करने के लिए SINGLE खाली लाइन को छोड़कर
:%s,\n\n\n,^M^M,g
(ऐसा कई बार करें)
कैसे MAXIMUM में दो खाली लाइनों को छोड़कर सभी खाली लाइनों को हटाने के लिए,
:%s,\n\n\n\n,^M^M^M,g
(ऐसा कई बार करें)
इनपुट के लिए ^ एम, मुझे विंडोज़ में कंट्रोल-क्यू और कंट्रोल-एम करना है
\r
स्थान पर भी उपयोग कर सकते हैं Ctrl-M
।
कैसा रहेगा:
:g/^[ \t]*$/d
विम में पर्ल के साथ काम करें:
:%!perl -pi -e s/^\s*$//g
chomp
भी काम नहीं करेगा ?
यह फ़ंक्शन केवल दो या अधिक रिक्त लाइनों को हटाता है, नीचे की रेखाओं को अपने vimrc में डालता है, फिर फ़ंक्शन को कॉल करने के लिए \ 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>
मैंने इस पृष्ठ पर कुछ उत्तरों की कोशिश की, लेकिन उनमें से बहुत से मेरे लिए काम नहीं कर पाए। शायद इसलिए कि मैं विंडोज 7 पर विम का उपयोग कर रहा हूं (मजाक न करें, बस मुझ पर दया करें: पी)?
यहाँ सबसे आसान है जो मैंने पाया कि विंडोज 7 में विम पर काम करता है:
:v/\S/d
यहाँ विम विकिया पर एक लंबा जवाब दिया गया है: http://vim.wikia.com/wiki/Remove_unwanted_empty_lines
: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 में, फिर अपना vim पुनः आरंभ करें। यदि आप कमांड का उपयोग करते हैं: 5,12DBL यह 5 वीं पंक्ति और 12 वीं पंक्ति के बीच की सभी रिक्त लाइनों को हटा देगा। मुझे लगता है कि मेरा जवाब सबसे अच्छा जवाब है!
यदि किसी चीज़ ने आपके टेक्स्ट को डबल लाइन्स्पोज़ किया है तो यह कमांड डबल स्पेसिंग को हटा देगा और पहले से मौजूद रिपीटिंग ब्लैंक लाइनों को एक सिंगल ब्लैंक लाइन में मर्ज कर देगा। यह एक लाइन के शुरू में ^ ^ ^ के एक अस्थायी सीमांकक का उपयोग करता है, ताकि यदि आपकी सामग्री के साथ यह झड़प कुछ और हो। केवल व्हाट्सएप वाली लाइनों को रिक्त माना जाता है।
%s/^\s*\n\n\+/^^^\r/g | g/^\s*$/d | %s/^^^^.*
यह मेरे लिए काम किया:
:%s/^[^a-zA-Z0-9]$\n//ig
यह मूल रूप से उन सभी लाइनों को हटा देता है जिनमें नंबर या अक्षर नहीं होता है। चूंकि मेरी सूची के सभी आइटम में पत्र थे, इसने सभी रिक्त लाइनों को हटा दिया।