2012-12-10 86 views
5

मेरा विम कॉन्फ़िगरेशन set formatoptions=c,q,a शामिल है। मैं निम्नलिखित समस्या से पूरी तरह से नाराज हूँ (| को दर्शाता कर्सर की स्थिति है, इसकी सही स्थिति कोई फर्क नहीं पड़ता, जैसा कि आप शायद इस टिप्पणी की लाइन मामलों में अपनी उपस्थिति का केवल तथ्य पता):विम: "gq" हार्ड-लपेट टिप्पणियों के लिए कमांड, लेकिन कोड नहीं (भले ही कोई खाली रेखा न हो)

" This is a long line which we would like to wrap. However, something sick is go|ing to happen if we hit "gqip" here! 
if has('win32') || has('win64') 
    set runtimepath^=~/.vim 
    set runtimepath+=~/.vim/after 
endif 

अब हम gqip मारा:

" This is a long line which we would like to wrap. However, something sick is 
" go|ing to happen if we hit "gqip" here! 
if has('win32') || has('win64') set runtimepath^=~/.vim set 
    runtimepath+=~/.vim/after endif 

यह क्या करता है - यह वास्तव में पूरी चीज को एक अनुच्छेद के रूप में मानता है। (! हाँ, मुझे पता है कि एक रिक्त पंक्ति से अलग करते हुए इस व्यवहार से बचाता है, लेकिन यह समस्या का समाधान नहीं करता है) मैं इसे होना चाहते हैं क्या वास्तव में है:

" This is a long line which we would like to wrap. However, something sick is 
" go|ing to happen if we hit "gqip" here! 
if has('win32') || has('win64') 
    set runtimepath^=~/.vim 
    set runtimepath+=~/.vim/after 
endif 

दूसरे शब्दों में, यह बहुत अच्छा होगा अगर gq किसी भी तरह से कोड के बारे में भूल सकता है और केवल टिप्पणियों के साथ काम करता है।

बोनस: कैसे इस स्वरूपण एक शॉट में पूरी बफर पर (टिप्पणी केवल लपेटकर) करना है? क्योंकि, आदर्श रूप से मैं उस सामान को फ़ाइल सहेजने के लिए एक विशेष स्वरूपण हुक में ले जाना चाहता हूं।

:g का उपयोग कर टिप्पणी की लाइनों के लिए

उत्तर

3

मेरी SameSyntaxMotion plugin के साथ, आप टिप्पणियों के पूरे ब्लॉक कर्सर में है प्रतिनिधित्व करने के लिए ay पाठ ऑब्जेक्ट का उपयोग कर सकते हैं और फिर से प्रारूप यह gqay का उपयोग कर।

+0

बीमार सामान आदमी, अच्छी नौकरी, इस प्लगइन को साझा करने के लिए धन्यवाद। बस एक टिप्पणी - मैं 'vimball'-packaging के कारण इसे स्थापित करने के लिए थोड़ा बोझिल था क्योंकि मैं रोगजनक का उपयोग करता हूं। साथ ही, मुझे लगता है कि एक बेहतर नाम 'सिंटेक्स ग्रुपमोशन' होगा, फिर यह और अधिक सहज ज्ञान प्राप्त करना अधिक आसान होगा। अब एक सवाल - यह डिफ़ॉल्ट मैपिंग 'वाई' और' वाई 'के साथ ठीक काम करता है, लेकिन मैंने इसे' जी 'और' जी '(उस "समूह" निमोनिक के बाद) को रीमेप करने का प्रयास किया और मैं भाग्य से बाहर था। यहाँ चाल क्या है? –

+0

आह, क्षमा करें, यह इसे 'g' पर रीमेप करता है। समस्या इस 'nnoremap gwag' जैसे संयोजन मैपिंग के साथ थी। सावधान रहें, किसी को इसे इस 'nmap gwag' की तरह मैप करना चाहिए, अन्यथा यह प्लगइन के' g' मैपिंग को पकड़ नहीं सकता है। –

+0

एक महान प्लगइन लड़कों के लिए अंगूठे ऊपर! : डी –

2

खोज, फिर लपेट उन पंक्तियों:

:%g/^"/normal gq_ 
+0

बाहर की जाँच की जाएगी व्यवहार करने लगता है ... और इस कमांड को मैप करें! – Ves

+0

आपका समाधान अलग-अलग लाइनों को लपेटता है, जबकि मुख्य लक्ष्य टिप्पणियों के ** पैराग्राफ ** को लपेटना था - जो अधिक सामान्य है। एक और नुकसान यह है कि आपने विमल के लिए टिप्पणी नेता '' 'को हार्ड कोड किया है। किसी भी प्रोग्रामिंग भाषा (या कम से कम किसी भी) के लिए, सामान्य समाधान के साथ आना बेहतर होता है, जो कि अगर किसी व्यक्ति के पास एक वेरिएबल तक पहुंच है जो वर्तमान टिप्पणी नेता को संग्रहीत करता है तो सीधा है। मैं खुद को नहीं जानता कि चर का नाम क्या है और क्या यह बिल्कुल मौजूद है या नहीं। –

10

यह वास्तव में एक ही पैरा

खैर, gqip साथ, आप इसे करने के लिए कहा के रूप में पूरी बात व्यवहार करता है ! आपको सही गति चुननी होगी। एक पंक्ति के इस मामले में, यह gqq होगा। 3 लाइनों के लिए, यह gq2j है। यदि यह गिनने के लिए बहुत सी रेखाएं हैं, तो दृश्य मोड का उपयोग करें: Vjjjjjjgq

+0

यह इस संदर्भ में कुछ प्रतिद्वंद्वी है। वास्तव में आप इस मामले में विम को क्या करना चाहते हैं, यह कोड के कई पंक्तियों (बिना किसी खाली रेखा के) के पैराग्राफ के रूप में सोचना है, भले ही वे कोड से खाली रेखाओं (ऊपर और नीचे) से अलग हों या नहीं। कोड कोड है, टिप्पणियां टिप्पणियां हैं। प्रत्येक बार लपेटने के लिए टिप्पणियों की कितनी पंक्तियां परेशान होती हैं, और किसी के समय को बर्बाद कर देती हैं, भले ही यह तेज़ कार्रवाई की तरह लगती है - वास्तव में समय आपको ज्ञात करता है। अलग-अलग होने के बावजूद, क्या मैं एक अनुच्छेद के रूप में टिप्पणियों का इलाज करने के लिए विम को पढ़ सकता हूं? –

+0

मुझे वास्तव में 'प्रारूप' में 'q' की वजह से बॉक्स से इस तरह के व्यवहार को देखने की उम्मीद है, हालांकि यह मामला नहीं है, जो मुझे लगता है कि एक बड़ी दुर्भाग्य है। –

+0

जैसा कि आपने बताया है, दूसरी तरफ सही गति प्रदान करना है। क्या आप एक सामान्य (किसी भी भाषा में टिप्पणियों के लिए काम कर रहे हैं, संभवतः कुछ परिवर्तनीय का उपयोग कर रहे हैं जो वर्तमान टिप्पणी नेता को दर्शाता है) गति के साथ आते हैं ताकि जब मैं इस तरह की टिप्पणी ब्लॉक में हूं तो यह शुरुआत में जाता है (जब कोई निकट टिप्पणी नहीं की जाती है * * ऊपर **) इस ब्लॉक के अंत तक और अंत तक पाठ का चयन करता है (जब नीचे कोई टिप्पणी नहीं है ** ** ** **)। यह वास्तव में, चाल करो। –

3

ip टेक्स्ट ऑब्जेक्ट का अर्थ अपेक्षाकृत संकीर्ण है, क्योंकि @IngoKarkat ने इंगित किया: यह केवल रिक्त रेखाओं द्वारा सीमित कोई भी पाठ अनुच्छेद है।

मैंने एक प्लगइन भी बनाया है जिसका उपयोग आप इस समस्या को हल करने के लिए कर सकते हैं।

textobj-comment - पाठ टिप्पणियां

SameSyntaxMotion प्लगइन, textobj-टिप्पणी filetype विशेष 'comments' सेटिंग टिप्पणियों की पहचान करने पर निर्भर करता है के साथ इसके विपरीत के लिए वस्तुओं। इसका मतलब है कि इसे सिंटैक्स-हाइलाइटिंग बंद करने के साथ भी काम करना चाहिए।

टिप्पणी प्रारूपित करने के लिए gqic का उपयोग करें।

प्रो टिप: gwgq से अधिक पसंद करें क्योंकि यह कर्सर की स्थिति को संरक्षित करता है।

+0

प्लस 1 रोगजनक स्थापित लाइनों को शामिल करने के लिए, इसलिए मैं उन्हें अपने टर्मिनल में सही और काट सकता हूं। अच्छा है अगर यह लाइन के अंत में लटकने वाली टिप्पणियां छोड़ सकता है, और फिर उस स्थान पर इंडेंट कर सकता है – Orwellophile

0

मुझे पता है कि मैं पार्टी के लिए थोड़ा देर हो चुकी हूं, लेकिन मुझे एक ही समस्या की जांच करते समय यह प्रश्न मिला। कैसे के बारे में:।।

सेट formatprg = fmt \ उपसर्ग = '\ "'

कि gqip के साथ के रूप में आवश्यक मैं निश्चित रूप से SameSyntaxMotion प्लगइन हालांकि