मैं विम में पाठ को कुछ लंबाई में कैसे लपेट सकता हूं?


102

आइए सापेक्ष उपायों की बात करते हैं। मेरा विम जैसा दिखता है:

aaaaaaaaaaaaa 
bbbbbbbbbbbbb 
ccccccccccccc 
etc

मैं चाहूंगा कि यह छोटा हो:

aaaaa
aaaaa
bbbbb
bbbbb
ccccc
ccccc
etc

मैं इसे कैसे प्राप्त कर सकता हूँ? और मैं इस तरह के ब्लॉक की लंबाई निर्धारित करने का प्रबंधन कैसे कर सकता हूं?


क्या आपका मतलब है कि रैप टेक्स्ट, और इंडेंट टेक्स्ट नहीं?
एलसी।

lc: मैं अंतर नहीं जानता। मैं रैप लिखने जा रहा था क्योंकि यह मेरे लिए अनुशंसित था, लेकिन मुझे कभी भी यह काम नहीं मिला।
लेओ लेपोल्ड हर्ट्ज़ '

जवाबों:


177

आप वास्तव में दो काम कर सकते हैं:

  1. अपने टेक्स्ट को लाइनब्रेकस डालकर, छोटी लाइनों वाले फॉर्मेट (iechange) को विम करें
  2. लाइनों को छोड़ दें जैसे वे हैं, लेकिन उन्हें लिपटे हुए प्रदर्शित करें

तुम्हें कौनसा चाहिए?

विकल्प 1 को सेटिंग के द्वारा प्राप्त किया जाएगा textwidth(उदाहरण के लिए :set textwidth=30, स्वारोप के उत्तर से)। फिर आप इसे (दृश्य मोड में) टाइप करके और टाइप करके अपने टेक्स्ट को रिफॉर्मेट कर सकते हैं gq। ( इस प्रकार textwidthसंक्षिप्त किया जा सकता है ।)tw:set tw=30

विकल्प 2 को चालू :set wrap/ बंद कर दिया जा सकता है :set nowrap। यह उन लाइनों को लपेट देगा जो खिड़की के लिए बहुत लंबे हैं।

दोनों स्वतंत्र हैं।


33
दृश्य मोड से gq कुंजी कमांड के लिए +1, उपयोगी उपयोगी है
फायर क्रो

3
FYI करें यह रिक्त स्थान पर टूट जाता है और gqgq एक पंक्ति में कुछ भी नहीं करता है जैसे कि प्रश्न में दिखाया गया है भले ही tw = 5।
dlamblin

2
@ डैमब्लिन: सही है। यदि आप foldव्हॉट्सएप का सम्मान किए बिना, बिल्कुल दी गई चौड़ाई पर मोड़ना चाहते हैं , तो कमांड का उपयोग fgm के उत्तर के रूप में करें।
साल्स्के

जहाँ तक मैं देखता हूं, आपका विकल्प काम नहीं करता है। wrapखिड़की की सीमा पर लपेटेंगे, पर नहीं textwidth
डरवह

@DerWeh: हां, खिड़की की बाउंड्री पर रैप होगा। मैंने स्पष्ट करने के लिए संपादन किया।
सालेस्के

60

एक बार जब आप 'टेक्स्ट एक्सपोज़र' सेट करते हैं, तो आप टेक्स्ट को विज़ुअल मोड से चुन सकते हैं और इसे अच्छी तरह से लपेटने के लिए gq दबा सकते हैं (आप कुछ पुराने / विरासत कॉन्फ़िगरेशन पर क्यू का उपयोग भी कर सकते हैं)।

कुछ उपयोगी सुझाव:

gqq (wrap the current line)
gq} (wrap this 'paragraph', i.e. until the next blank line)
:h gq

3
+1, मैंने अकस्मात gq मारा, जबकि विम में, पिछले आधे घंटे को यह देखने की कोशिश में बिताया कि मैं क्या हिट था। यह बहुत उपयोगी है।
user176121

gqqवर्तमान लाइन ( gqgqया के बजाय gq$) को भी लपेटता है ।
राख

21

गुना (1) का उपयोग करना एक संभावना है:

:%!fold -w5 

परिणाम:

aaaaa
aaaaa
aaa 
bbbbb
bbbbb
bbb 
ccccc
ccccc
ccc

1
यह भी तह के लिए रिक्त स्थान का सम्मान नहीं करता है
लियोनेल

7
@ लॉयन: हाँ। रिक्त स्थान का सम्मान करने के लिए, फोल्ड कमांड में "-s" विकल्प जोड़ें।
18

14
:set textwidth=30

मूल पोस्टर के उदाहरण की तरह, रिक्त स्थान नहीं होने पर पाठ्यपुस्तक इसे कैसे संभालती है? मेरे पास एक नाटक है और यह केवल पाठ विन्यास के आधार पर प्रारूपित करने के लिए लगता है यदि रिक्त स्थान हैं (या निश्चित रूप से, यदि ब्रेकर चर कुछ और पर सेट है)।
एंडी

3
@ textwidthऔर नो-स्पेस स्थिति को नहीं संभालेंगे। आप formatexprऐसा करने के लिए अपना स्वयं का फ़ंक्शन लिख सकते हैं ।
स्वरूप सीएच

8

यदि आपके पास रिक्त स्थान के बिना पाठ है जिसे आप एक निश्चित लंबाई पर तोड़ना चाहते हैं, तो न तो बाहरी उपयोग करना आवश्यक है और न foldही अपना स्वयं का लिखना formatexpr

:%s/\(.\{80\}\)/\1\r/g

80 लाइनों पर सभी लाइनों को तोड़ देगा।


2
इसने ओपनएसएसएल प्रमाणपत्र को फिर से जीवित करते हुए मेरा दिन बचाया। धन्यवाद
कैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.