2015-12-03 5 views
9

लपेटकर मान लीजिए मैं (Python स्क्रिप्ट, उदाहरण के लिए) इस तरह की एक फ़ाइल में स्ट्रिंग की एक सूची है: यदि मैं इस पाठ का एक दृश्य चयन करने केvim: GQ खुला उद्धरण पर ध्यान नहीं देता जब पाठ

my_list_of_numbers = ["one two", 
    "three four", 
    "five six", 
    "seven eight", 
    "nine ten", 
    "eleven twelve"] 

, मैं gq का उपयोग पाठ रैप करने के लिए कर सकते हैं पाने के लिए:

my_list_of_numbers = ["one two", "three four", "five six", "seven eight", "nine 
    ten", "eleven twelve"] 

हालांकि, तत्व "nine ten" अब दो लाइनों पर आधे में विभाजित है।

खुले उद्धरण के अंदर एक न्यूलाइन चरित्र दर्ज करने से बचते हुए मैं टेक्स्ट को कैसे लपेटूं? मेरे वांछित परिणाम इस प्रकार दिखाई देगा:

my_list_of_numbers = ["one two", "three four", "five six", "seven eight", 
    "nine ten", "eleven twelve"] 
+6

विम यह नहीं कर सकते; आपको ऐसा करने के लिए कोड देना होगा। ': अधिक जानकारी के लिए fp' (बाहरी फॉर्मेटर) और ': fex' (vimscript formatter) में सहायता करें। – Amadan

+1

ऐसा प्रतीत होता है कि 'gq' का उपयोग आपके उदाहरण में इंडेंट नहीं होगा, है ना? वैसे, यदि आप अपना वांछित परिणाम प्राप्त करना चाहते हैं, तो कर्सर को पहली पंक्ति में रखें, '4JjJ' –

+0

@ lord63.j को अपने योगदान के लिए धन्यवाद। 'gq' इंडेंट करेगा यदि आप': फ़ाइल टाइप प्लगइन 'पर सेट करते हैं,' 'फ़ाइल टाइप इंडेंट' और ': ft = python' सेट करें। '4 जेजेजे 'निश्चित रूप से नौकरी करता है लेकिन मुझे अपने सिर में काम करने की आवश्यकता होगी कि लाइनें 80 अक्षरों तक कितनी लाइन लाएंगी। – christoph

उत्तर

1

मुझे नहीं लगता था यह करने के लिए एक आरक्षित आदेश है कि वहाँ है, लेकिन हम द्वारा यह कर सकते हैं एक लाइन के लिए और उसके बाद रेगुलर एक्सप्रेशन द्वारा आने से पहले, करने के लिए इसे तोड़ने आपकी वांछित इच्छा

%s/\(.\{-}".\{-}".\{-}".\{-}".\{-}".\{-}".\{-}\)"/\1\r"/gec 

बस पूरी चीज़ को एक कुंजी में मानचित्र करें। ताकि आपको आसान बना सकें।

+0

प्रयास के लिए धन्यवाद लेकिन दुर्भाग्य से यह वही नहीं करता जो मैं चाहता हूं। यदि उद्धरण के भीतर पाठ छोटा है, तो मैं प्रत्येक पंक्ति पर अधिक "शब्द" चाहता हूं, और यदि वे लंबे समय तक चाहते हैं तो मैं कम चाहता हूं - जबकि यह केवल प्रत्येक पंक्ति पर तीन रखता है। – christoph

0

कृपया इस स्क्रिप्ट को एक फ़ाइल में सहेजें और अपने vim में लोड करें।

vnoremap a d:call Replace(@")<CR> 


function! Replace(arg1, ...) 
      let Var = Myfun(a:arg1) 
       call append(line('.') - 1, [Var]) 
       silent! %s/@@[email protected]@/ /g 
       silent! %s/@[email protected]/\r/g 
endfunc                  

function! Myfun(s) 
      let Var = a:s 
       let Var = substitute(Var, '\n', '@@[email protected]@', 'g') 
       let Var = substitute(Var, '\s\s*', ' ', 'g') 
       let Varlength = strlen(substitute(Var, '\(.\{-}\".\{-}\"\,.\{-}\".\{-}\"\,.\{-}\".\{-}\"\,\)', '\1', 'g')) 
       if Varlength < 120 
       let Var = substitute(Var, '\(.\{-}\".\{-}\"\,.\{-}\".\{-}\"\,.\{-}\".\{-}\"\,\)', '\[email protected][email protected]', 'g') 
       else 
       let Var = substitute(Var, '\(.\{-}\".\{-}\"\,.\{-}\".\{-}\"\,\)', '\[email protected][email protected]', 'g') 
       endif 
      return Var 
endfunc 

ब्लॉक पाठ और हिट कुंजी "एक"

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