2010-05-13 12 views
82

मैं सिर्फ this post पर देख रहा था जो वर्णन करता है कि पूरे शब्दों को विम में कैसे लपेटें।विम में शब्द लपेटें (इंडेंटेशन को संरक्षित करना)

:set formatoptions=l 
:set lbr 

कौन इस पाठ लेता है (टैब \ t के रूप में दिखाया जाता है):

:

*Inside of window      *Outside of window 
|---------------------------------------|  
|\t\tthis is a like of text that will wr|ap here        
|\t\tcan you see the wrap    | 
|          | 
|---------------------------------------| 

यह (टैब \ t के रूप में दिखाया जाता है) इस तरह एक व्यवहार सिद्ध स्वीकार कर लिया समाधान यह था

*Inside of window      *Outside of window 
|---------------------------------------|  
|\t\tthis is a like of text that will | 
|wrap here        | 
|\t\tcan you see the wrap    | 
|          | 
|---------------------------------------| 

हालांकि मैं इस फ़ंक्शन को फिर से परिभाषित करना चाहता हूं। मैं लपेटने वाली रेखा को इसके सामने टैब की एक ही संख्या रखना चाहूंगा कि ऊपर की रेखा में प्लस वन है। Ie:

*Inside of window      *Outside of window 
|---------------------------------------|  
|\t\tthis is a like of text that will | 
|\t\t\twrap here      | 
|\t\tcan you see the wrap    | 
|          | 
|---------------------------------------| 

कोई विचार?

+27

+1 जितना संभव हो सके प्रश्न को स्पष्ट करने के लिए किए गए प्रयासों के लिए +1। –

+0

क्या आप खिड़की के किनारे पर नरम-लपेटने के लिए पाठ चाहते हैं, या लाइन एक निश्चित लंबाई तक पहुंचने पर हार्ड-रैप? मुझे लगता है कि आप हार्ड-रैपिंग चाहते हैं (जहां "इच्छा" शब्द के बाद आपके टेक्स्ट में एक नई लाइन डाली गई है), लेकिन आपके उदाहरणों से बताना मुश्किल है। –

+0

@ बिल, मैं ज्यादातर सॉफ्टवैपिंग में रूचि रखता हूं लेकिन एक हार्डव्रपिंग समाधान भी स्वीकार्य होगा। – sixtyfootersdude

उत्तर

16

breakindent patch जो आप ढूंढ रहे हैं वह है। मैं सफलतापूर्वक इस सूत्र में पाया निर्देशों का उपयोग कर इसे लागू किया:

Patch Vim with the breakindent patch on OS X with Homebrew

विशेष रूप से, echristopherson के Homebrew सूत्र।

मुझे पता है कि यह धागा पुराना है लेकिन यह Google पर लोकप्रिय है और समाधान खोजने का प्रयास करते समय मैं कई बार आया हूं।

संपादित करें: यह पैच अब पैच 7.4.338 के रूप में विम के साथ शामिल है। देखें: https://retracile.net/blog/2014/07/18/18.00

पर Yosemite (मैक ओएस एक्स), मैं hombrew साथ snowbound के आदेश का प्रयोग किया:

brew install macvim --with-features=huge --override-system-vim --HEAD 
+0

पैच होमब्री पर नवीनतम मैकविम के साथ काम नहीं कर रहा है? @ Exit42 आप इसे कैसे काम करने के लिए मिला? – snowbound

+0

एनवीएम। मैंने मैकविम को होमब्री ब्लडिंग एज के साथ संकलित किया 'ब्रेव इंस्टॉल मैकवीम - साथ-फीचर्स = विशाल - ओवरराइड-सिस्टम-विम - हाइड ' – snowbound

+1

नीचे मेरा उत्तर देखें: http://stackoverflow.com/questions/2828174/word-wrap -इन-विम-संरक्षित-इंडेंटेशन/26578161 # 26578161 विम के नए संस्करणों में पैच की आवश्यकता नहीं है। – JoshuaD

7

सबसे अच्छा आप प्राप्त करने जा रहे हैं showbreak विकल्प जो प्रत्येक लिपटे लाइन के सामने एक निश्चित स्ट्रिंग लगाएगा (मैं set showbreak=... का उपयोग करता हूं)।

+0

क्या आप एक समारोह होने के लिए शोबैक सेट कर सकते हैं? –

+0

@AlexanderBird [': मदद 'शोब्रेक'] के अनुसार [http://vimdoc.sourceforge.net/htmldoc/options.html#%27showbreak%27), नहीं, आप नहीं कर सकते - 'शोबैक' केवल एक है स्ट्रिंग। –

4

मैं उस उत्तर से सहमत हूं जो कहता है कि 'शोब्रेक' सबसे अच्छा विकल्प है। शोब्रेक आम तौर पर आपको गैर-प्रिंटिंग वर्ण (उदा।, रिक्त स्थान या टैब) को शोबैक स्ट्रिंग में रखने की अनुमति नहीं देता है, इसलिए आमतौर पर इसका उपयोग किया जाता है, यह आपको बाएं हाशिए के साथ एक संकेतक देगा, यानी कोई असली इंडेंट नहीं। यह अच्छा नहीं है, क्योंकि ओपी का मुख्य लक्ष्य, मुझे लगता है कि लपेटा हुआ लाइन देना है, एक इंडेंट उन्हें बाएं मार्जिन क्षेत्र को छेड़छाड़ करने और अपने आप की तरह दिखने से रोकता है।

तो शोबैक का उपयोग करके एक (बदसूरत) इंडेंट जोड़ने का एक तरीका सिर्फ बहुत से वर्णों का उपयोग करना है, .eg, ": set showbreak => ---------------> "। यह कुछ ऐसा है इस तरह दिखता है में परिणाम है:

*Inside of window      *Outside of window 
|---------------------------------------|  
|\t\tthis is a like of text that will | 
|>--------------->wrap here    | 
|\t\tcan you see the wrap    | 
|          | 
|---------------------------------------| 

एक बेहतर विकल्प अंतरिक्ष वर्ण (विम के अपने उदाहरण मानते हुए यूनिकोड सक्षम है), जिनमें से प्रत्येक का उपयोग कर showbreak स्ट्रिंग में प्रवेश किया जा सकता nonbreaking का उपयोग करना हो सकता है ctrl-v, 160 का मुख्य अनुक्रम। इस तरह आप एक शोबैक स्ट्रिंग दर्ज कर सकते हैं जो बाईं ओर खाली है और एक सच्चे इंडेंट दिखाई देता है। उदा।, ": सेट शोबैक = ... ... ... >>" जहां प्रत्येक '।' कमांड में वास्तव में एक nonbreaking अंतरिक्ष चरित्र ctrl-V, 160 दबाकर दर्ज किया गया है। इस तरह आप एक चादर है कि अच्छी तरह से इंडेंट के साथ खत्म हो, इस तरह:

*Inside of window      *Outside of window 
|---------------------------------------|  
|\t\tthis is a like of text that will | 
|   >>wrap here    | 
|\t\tcan you see the wrap    | 
|          | 
|---------------------------------------| 

तुम अब भी पिछले पंक्ति का इंडेंट के अनुसार मांगपत्र के स्तर पर अलग अलग करने के लिए कोई क्षमता नहीं है, लेकिन कम से कम आप को साफ मिलता है खिड़की के बाएं हाशिए के साथ कई दृश्य अव्यवस्था के बिना लपेटा लाइनों का इंडेंट। यदि एक लपेटा हुआ रेखा का इंडेंट वास्तविक रेखा की शुरुआत की तुलना में कम है, तो यह अभी भी भ्रम हो सकता है, लेकिन संभवतया शोषण "इंडेंट" को काफी बड़ा बनाकर बचाया जा सकता है (यानी, आपके कोड में आमतौर पर पाए गए किसी भी इंडेंट से अधिक) लेकिन अभी भी इतना छोटा है कि यह पाठ के सुस्पष्ट लपेटने के लिए पर्याप्त जगह प्रदान करता है। कई प्रयोगों के लिए मुझे लगता है कि 40 या 50 रिक्त स्थान का एक शोषक इंडेंट यह बहुत अच्छा करेगा।

+7

आप उन्हें से बचकर रिक्त स्थान में रिक्त स्थान डाल सकते हैं: ': show showbreak = \ \ \ \'। हालांकि, टैब के लिए अभी भी काम नहीं करता है। –

19

यह जब प्रश्न मूल रूप से कहा गया था काम नहीं किया, लेकिन 25 जून 2014, इस इच्छा के रूप में काम। (मान लें कि आप उस तारीख से नए एक संस्करण के लिए अपने vim अद्यतन)

अपने .vimrc में जोड़ें:

set breakindent 

और बस हो गया!

-

कुछ लोगों को (अपने आप को शामिल) कई कंप्यूटरों में एक भी .vimrc साझा करें। उस स्थिति में, यह लाइन मजबूत होना महत्वपूर्ण है (कष्टप्रद त्रुटि संदेशों से बचने के लिए)। यह थोड़ा बेहतर है:

if has("patch-7.4.354") 
    set breakindent 
endif 

इस तरह, यदि आप विम के पहले संस्करण पर हैं, तो आपको कोई त्रुटि संदेश नहीं मिलता है।

+0

दिलचस्प बात यह है कि यह मेरे सिग्विन के 7.4 विम पर काम करता है लेकिन मेरे अनबंटू के 7.4 विम में नहीं। मुझे लगता है कि इसे थोड़ा अधिक व्यापक रूप से प्राप्त करने की आवश्यकता है, लेकिन जल्द ही सार्वभौमिक गोद लेने को देखेंगे। – JoshuaD

+1

विम 7.4 @ आर्कलिंक्स में काम करता है। –

+1

आप इसके बजाय इस परीक्षा का उपयोग कर सकते हैं: 'अगर है ("पैच-7.4.354") ' –

संबंधित मुद्दे