विम में लाइन ब्रेकिंग को कैसे रोकें


257

मुझे पसंद है कि लंबी लाइनें एक से अधिक टर्मिनल लाइन में प्रदर्शित होती हैं; मुझे यह पसंद नहीं है कि विम मेरे वास्तविक पाठ में नई प्रविष्टियाँ डाले। .Vimrc के किस भाग को मुझे बदलना चाहिए?


7
स्पष्टता के लिए: आपको यह पसंद है कि लंबी लाइनें एक से अधिक टर्मिनल लाइन में प्रदर्शित होती हैं; आपको यह पसंद नहीं है कि विम आपके वास्तविक पाठ में नई सूची सम्मिलित करता है? यदि ऐसा है तो :set nowrapआप क्या चाहते हैं की :( विपरीत है।
एंड्रयू Aylett

@Andrew: हाँ आपका सारांश ठीक वही है जो मैं चाहता हूँ
Haiyuan Zhang

जवाबों:


304

उपयोग

:set wrap

नेत्रहीन रूप से लाइनों को लपेटने के लिए, अर्थात लाइन अभी भी पाठ की एक पंक्ति है, लेकिन विम इसे कई लाइनों पर प्रदर्शित करता है।

उपयोग

:set nowrap

लंबी लाइनों को सिर्फ एक लाइन के रूप में प्रदर्शित करने के लिए (यानी आपको पूरी लाइन देखने के लिए क्षैतिज रूप से स्क्रॉल करना होगा)।


3
आप लोगों के सुझाव के लिए धन्यवाद। मैं के साथ चला गया: सेट Nowrap और: सेट textwidth = 0 महान काम करता है
रॉबर्ट बेल्ट्रान

5
जब मैं टाइप करता हूं तो मैं अभी भी "दृश्य" 80 कॉलम की सीमा को देखना चाहता हूं और मैं नहीं चाहता हूं कि जब मैं 80 वें कोलंबो के बाद टाइप करूं तो ऑटो फीड लाइन को जोड़ दें। मेरा क्या हाल है?
ओलिवियर पोंस

7
यह ठीक वही उत्तर है जिसकी मुझे तलाश थी, लेकिन यह ओपी के सवाल का जवाब नहीं है। शीर्ष उत्तर के रूप में ऐसा होना थोड़ा भ्रामक है। मुझे नहीं पता कि इस स्थिति को कैसे ठीक किया जाए। मैं मूल प्रश्न का उत्तर देने के लिए आपके उत्तर को संपादित करूंगा। लेकिन पहले से ही एक उचित जवाब है जो लगभग उच्च मतदान है। इसलिए मैंने केवल दो उत्तरों को बदलने के लिए मतदान किया।
डैनियल डारबोस

3
यह ठीक वही उत्तर है जिसकी मुझे तलाश नहीं थी , और यह ओपी के प्रश्न का उत्तर नहीं है।
पिओल

यह सवाल का जवाब नहीं है।

194

मुझे पसंद है कि लंबी लाइनों को एक से अधिक टर्मिनल लाइन में प्रदर्शित किया जाता है

इस प्रकार का दृश्य / वर्चुअल लाइन रैपिंग wrapविंडो विकल्प के साथ सक्षम है:

set wrap

मुझे यह पसंद नहीं है कि विम मेरे वास्तविक पाठ में नई प्रविष्टियाँ डाले।

भौतिक लाइन रैपिंग को बंद करने के लिए, बफर textwidthऔर wrapmarginबफर दोनों विकल्पों को स्पष्ट करें:

set textwidth=0 wrapmargin=0

1
धन्यवाद! set textwidth=0 wrapmargin=0काम करता है, लेकिन अगर मैं इसे डाल देता हूं .vimrc, तो इसके लिए सादे पाठ फ़ाइलों के लिए कोई प्रभाव नहीं पड़ता है। मैं ओवरराइट को कैसे पता लगाऊं और खत्म करूं?
quododup

7
@qubodup आप परीक्षण कर सकते हैं यदि कोई चीज आपकी ओवरराइटिंग कर रही है। एक फ़ाइल को खोलकर जहाँ आप समस्या देखते हैं और प्रवेश कर रहे हैं :verbose set textwidth? wrapmargin?। यह आपको उनके वर्तमान मूल्य और यह भी बताएगा कि उन्हें कहां सेट किया गया था। यह संभव है कि आपके पास एक प्लगइन है जो उन्हें ओवरराइड कर रहा है। उस स्थिति में आप या तो उस प्लगइन को अनइंस्टॉल कर सकते हैं, या बाद में अपने रनटाइमपथ (जैसे:) ~/.vim/afterया अपने स्वयं के ऑटोकॉमैंड के साथ प्लगइन सेटिंग को ओवरराइड करने का प्रयास कर सकते हैं । सही दृष्टिकोण इस बात पर निर्भर करेगा कि कहां / कैसे इसे रीसेट किया जा रहा है।
लारेंस गोन्साल्वेस

set wrapऔर set linebreakयह मेरे लिए क्या किया है।
इलिया चोली

36

मुझे यकीन नहीं है कि मैं पूरी तरह से समझता हूं, लेकिन आप 'फॉर्मेटॉप्शन' कॉन्फ़िगरेशन सेटिंग की तलाश कर सकते हैं। कुछ ऐसा आजमाएं :set formatoptions-=ttविकल्प द्वारा चौड़ाई सेट पर पाठ रैप करने के लिए पंक्ति विराम सम्मिलित होगा textwidth। आप इस आदेश को अपने में भी डाल सकते हैं .vimrc, बस कोलन ( :) को हटा दें ।


3
यह मुझे ओपी की इच्छा को संबोधित करने का सबसे अच्छा विकल्प लगता है। मुझे यह तथ्य पसंद है कि विम अभी भी एक ऊर्ध्वाधर रेखा दिखाता है tw
मिचस

3
यह वास्तव में ओपी के सवाल का जवाब देने वाला एकमात्र उत्तर है। अधिकांश अन्य विपरीत करते हैं। ओपी अब भी चाहता है कि लंबी लाइनें चारों ओर लिपटी हुई दिखाई दें, लेकिन विम के लिए लाइन ब्रेक को स्वचालित रूप से सम्मिलित नहीं करना है।
सेबस्टियन

33

उपयोग :set nowrap.. एक आकर्षण की तरह काम करता है!


10
सिवाय इसके कि यह ओपी को व्यवहार के रूप में परिभाषित करने के विपरीत करता है ...: पी
मॉरल

5
@Morlock, लेकिन मेरे पास मौजूद सवाल का जवाब है और Google ने मुझे यहां पहुंचाया :)
बेन उस्मान

क्या इसके लिए कोई कीबोर्ड शॉर्टकट है?
पीनी चेनी

@PiniCheyni, अपने .vimrc फ़ाइल में जोड़ें: nnoremap <Cw>: invwrap सेट करें <CR> फिर आप पाठ रैपिंग को टॉगल करने के लिए Ctrl + W का उपयोग कर सकते हैं।
reas0n

30

:set tw=0

वीआईएम ऑटो-इंसर्ट लाइन को नहीं तोड़ेगा, लेकिन लाइन को लपेटता रहेगा।


3
मैं बिल्कुल विपरीत चाहता हूं ... यह तब होता है जब मैं टाइप करता हूं मैं अभी भी "दृश्य" 80 कॉलम की सीमा देखना चाहता हूं और मैं नहीं चाहता हूं कि जब मैं 80 वें कोलंबो के बाद टाइप करूं तो ऑटो ऐड लाइन फीड को विम करूं। मेरा क्या हाल है?
ओलिवियर पोंस

16

आपको set lbrउपयोगी मिल सकता है; साथ set wrapपर इस लपेट जाएगा, लेकिन इसमें केवल रिक्त स्थान पर और एक शब्द के बीच में नहीं लाइन काटने।

जैसे

without lbr the li
ne can be split on
a word

तथा

with lbr on the
line will be
split on 
whitespace only

यह संक्षिप्त विकल्पों से बचने के लिए अत्यधिक अनुशंसित है क्योंकि भविष्य में आपको यह समझने के लिए सहायता प्रणाली पर एक खोज करनी होगी कि आप क्या कर रहे हैं, इसलिए set nolinebreakइसके बजाय का उपयोग करेंset lbr
SergioAraujo

12

set formatoptions-=t विज़ुअल टेक्स्टवर्क रखता है, लेकिन इन्सर्ट मोड में नई लाइन नहीं जोड़ता है।


4

इसकी अजीब बात यह है कि इस तरह की एक साधारण सेटिंग के लिए काम करने के लिए 'hocus-pocus' की आवश्यकता होती है।

आपके प्रश्न का उत्तर देने के लिए, मेरे लिए यह निम्नलिखित के संयोजन के साथ काम करना चाहिए:

:set wrap linebreak nolist

(यह मौजूदा लाइनों को तोड़ने से रोकने के लिए लगता है, बस लपेटें।)

तथा

set formatoptions=l

(यह नई / संपादित पंक्तियों को टूटने से रोकता है, जबकि + = मेरे लिए ऐसा नहीं करता है क्योंकि अन्य सेटिंग्स / प्लगइन्स को स्थान खोजने लगता है और अपने स्वयं के विकल्प जोड़ते हैं जो मेरा ओवरराइड करते हैं।)


4

यदि मेरी तरह, आप Windows पर gVim चला रहे हैं, तो आपकी .vimrc फ़ाइल पाठ फ़ाइलों के लिए स्वचालित रूप से सेट textwidth(मेरे मामले में 78) एक और 'उदाहरण' Vimscript फ़ाइल को सोर्स कर सकती है।

इसी तरह के एक सवाल के बारे में मेरा जवाब है - वी और विम स्टैक एक्सचेंज साइट पर कॉलम 80 पर जीवीएम रैपिंग टेक्स्ट को कैसे रोकें :

मेरे मामले में, विटोर की टिप्पणी ने सुझाव दिया कि मैं निम्नलिखित चलाता हूं:

:verbose set tw?

ऐसा करने से मुझे निम्नलिखित आउटपुट मिले:

textwidth=78
      Last set from C:\Program Files (x86)\Vim\vim74\vimrc_example.vim

में vimrc_example.vim , मैं प्रासंगिक लाइनों पाया:

" Only do this part when compiled with support for autocommands.
if has("autocmd")

  ...

  " For all text files set 'textwidth' to 78 characters.
  autocmd FileType text setlocal textwidth=78

  ...

और मैंने पाया कि मेरी .vimrc उस फाइल को सोर्स कर रही है:

source $VIMRUNTIME/vimrc_example.vim

मेरे मामले में, मैं textwidthकिसी भी फाइल के लिए सेट नहीं होना चाहता , इसलिए मैंने सिर्फ vimrc_example.vim में संबंधित लाइन को टिप्पणी दी


1
Vimrc_example.vim फ़ाइल को संपादित करने के बजाय, मैंने अभी autocmd FileType text setlocal textwidth=0vimrc फ़ाइल में जोड़ा और उस समस्या को ठीक किया जब अन्य प्रस्तावित समाधान नहीं हुए।
ग्रैंडमाडिरल

3

यह सही है कि सेट नाउपर आपको vi / vim के बिना एक लंबी लाइन में पेस्ट करने की अनुमति देगा, लेकिन नई रीडिंग के लिए लाइन को नेत्रहीन लपेटा नहीं जा सकता है। इसके बजाय यह केवल एक लंबी लाइन है जिसे आपको स्क्रॉल करना है।

लाइन को नेत्रहीन रूप से लपेटने के लिए लेकिन इसमें नई अक्षर नहीं डाले गए हैं, रैप सेट किया है (जो कि डिफ़ॉल्ट रूप से सेट करने के लिए आवश्यक नहीं है) और टेक्स्टवर्क सेट करना = ०

कुछ प्रणालियों पर पाठ्यपुस्तक की स्थापना = 0 डिफ़ॉल्ट है। यदि आपको ऐसा नहीं लगता है, तो अपने .exrc फ़ाइल में सेट टेक्स्टवर्क = 0 जोड़ें ताकि यह आपके उपयोगकर्ता के सभी vi / vim सत्रों के लिए डिफ़ॉल्ट हो जाए।

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