पैराग्राफ के अंदर लाइनों में शामिल हों


13

मान लीजिए कि आपने स्वचालित लाइन को तोड़ने के साथ एक लंबा दस्तावेज़ टाइप किया है, इसलिए 79 वर्णों पर सभी लाइनें तोड़ दी गई हैं। आपने उस लंबाई की सभी पंक्तियों को तोड़ने के लिए पूरे दस्तावेज़ में प्रारूपण भी लागू किया होगा।

पैराग्राफ आपके दस्तावेज़ में रिक्त लाइनों द्वारा सीमांकित किए जाते हैं।

अब आप तय करते हैं कि आप पैराग्राफ के भीतर लाइन ब्रेक बिल्कुल नहीं चाहते हैं।

आप पैराग्राफ की सीमाओं को पूरी तरह से खत्म किए बिना पैराग्राफ के भीतर की सभी लाइन को कैसे हटा सकते हैं?

मैंने यह त्वरित और मूर्खतापूर्ण हैक किया है, लेकिन मैं उचित तरीके की तलाश कर रहा हूं।

:%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) से पहले एक पंक्ति को समाप्त करें ।

वैकल्पिक रूप से, :g/^$/dयदि आप नहीं चाहते हैं कि कोई रिक्त रेखा बनी रहे (तब आप इसे हटा सकते हैं -1)।


धन्यवाद। यह मेरे लिए बहुत करीब है, हालांकि, यह पैराग्राफ के बीच की खाली लाइनों को हटा रहा है। (मैंने फ़ाइलफॉर्मैट यूनिक्स और डॉस को देखने की कोशिश की कि क्या यह विंडोज की चीज है)। इसके अलावा, क्या आप आदेशों का थोड़ा सा अनुवाद कर सकते हैं? G अंतिम पंक्ति में जाता है। : सहायता के अनुसार "परिशिष्ट" है, लेकिन मुझे यकीन नहीं है कि वह क्या करता है। इसके अलावा जी / पैटर्न / सेमी आप मुझे खो दिया है। आज्ञा क्या है?
dggoldst 13

@ डॉगल्डस्ट: मैंने खाली लाइनों को बनाए रखने के लिए कमांड को बदल दिया है। पहली तीन लाइनें फ़ाइल के अंत में एक खाली लाइन जोड़ने के लिए हैं (अन्यथा अंतिम पैराग्राफ का मिलान नहीं किया जाएगा)। अंतिम कमांड है :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)

( वीआईएम 7.2 में काम करता है। )

मूल रूप से स्वरूपित होने पर पैराग्राफ को कैसे विभाजित किया गया था, इस पर निर्भर करते हुए, आप gJकमांड (रिक्त स्थान के बिना सम्मिलित करें) को Jकमांड के साथ (स्पेस के साथ जुड़ें ) बदलना चाह सकते हैं ।

मनमानी 999गिनती केवल फ़ाइल में पैराग्राफ की कम से कम संख्या होने की आवश्यकता है - आप एक बड़ी संख्या का चयन कर सकते हैं यदि आप चाहते हैं और प्रोसेसर चक्रों के अलावा कुछ भी नहीं खोते हैं। पैराग्राफ के बीच एक और केवल एक रिक्त रेखा को मानते हुए, आप उपयोग करके अधिक सटीक पैराग्राफ़ गणना प्राप्त कर सकते हैं:

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

यह मेरे लिए काम करता है। शुरुआत में एक "जीजी" जोड़ना अच्छा रहेगा, जिससे कर्सर को फाइल के शीर्ष पर रखा जा सके। इसके अलावा, जीजे के बजाय जे का उपयोग करने से अलग-अलग शब्दों को एक में एक साथ मैश करने का कारण नहीं बनता है। यह केवल "फॉर्मेटॉप्शन" के मेरे मूल्यों के लिए हो सकता है, जो वर्तमान में मुझे हैरान कर रहे हैं।
dggoldst
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.