2011-12-13 14 views
7

किसी को भी एक तरह से संरेखण के लिए खरोज पात्रों के रूप में कठिन टैब उपयोग रिक्त स्थान का उपयोग करता है, लेकिन है कि में उसे vim सेटअप है? समस्या मेरे पास है कि जब की तरह मेंविम: सी स्रोत फ़ाइलों के साथ खरोज के लिए टैब, रिक्त स्थान संरेखण के लिए उपयोग

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */ 
|-------|------- whatever /* some additional alignment added automatically */ 

, तो cin (जो मेरे लिए बहुत जरूरी) कुछ संरेखण अभी जिस तरह कहते हैं एक निरंतरता लाइन शुरू करने मैं positionally पसंद करते हैं, है, लेकिन यह संरेखण के रूप में उपयोग कर बनाई गई है जितना संभव हो उतना कठिन टैब और रिक्त स्थान के साथ बाकी को भरना (जैसा कि मैंने कल्पना करने की कोशिश की)।

तो, संक्षेप में, cin वास्तव में खरोज और संरेखण के बीच अंतर करना प्रतीत नहीं होता। मुझे वास्तव में यह पसंद है कि ऊपर दिए गए उदाहरण में सभी जोड़ा संरेखण रिक्त स्थान है। ts अस्थायी रूप से स्विच करते समय इस तरह संरेखण सही ढंग से संरक्षित किया जाएगा।

इसे फिर से स्पष्ट है, मैं कभी नहीं किसी भी लाइन में पहली गैर खाली चरित्र के सामने <TAB> या <SPACE> दबाने (और किसी भी मैनुअल स्थानांतरण या जो कुछ भी नहीं कर रही है), निम्नलिखित कोड लिखने में सक्षम होना चाहते हैं बनाने के लिए :

void foo(int bar) 
{ 
|-------somestatement; 
|-------if (somecondition && (someothercondition || 
|-------      whatevercomesnext)) 
|-------|-------dosomething; 
} 

मैं पहले से ही ctab.vim बाहर की कोशिश की है, लेकिन यह संपादन नरम टैब के साथ एक गठबंधन लाइन, जो मेरे लिए मूर्खतापूर्ण लगता है पर केंद्रित है क्योंकि मैन्युअल संरेखण एक काम जो 1 कदम शोधन मिलता और टैब- नहीं है चौड़ाई कदम परिशोधन। मैंने cin संरेखण के लिए मिश्रित टैब और रिक्त स्थान का उपयोग नहीं किया है।

मुझे इसे पूरा करने के लिए कोई भी अंतर्निहित तरीका नहीं मिला है। शायद अभी भी, एक है? वैसे भी, मुझे संदेह है कि एक प्लगइन है जो करता है। हालांकि मैं वैसे vim स्क्रिप्ट अपने आप को नहीं है और पर्याप्त अनुभव नहीं हो सकता है, मुझे कहना पड़ेगा कि ज्यादातर प्लगइन्स मैं बाहर की कोशिश की केवल अपने संपादक विन्यास में गड़बड़ ...

+0

मैं अपने आप को 'ctab.vim' (संस्करण 2.6) का उपयोग कर रहा हूं, और ऐसा लगता है कि आप जो हासिल करना चाहते हैं, यानी ऊपर कोड कोड में टाइप करते समय, मैं नहीं करता – ekoeppen

उत्तर

1

ठीक है, सवाल के लिए खेद है। अंततः मुझे इसके लिए कुछ अच्छी सामग्री मिली है।

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

सारांश में, वर्तमान में vim इतनी छूट इसे आराम से किया जा करने के लिए नहीं है।

मेरे वैकल्पिक हल वर्तमान में :set cinoptions=(1 जो केवल एक ही संरेखण इकाई कहते हैं जब एक निरंतरता लाइन शुरू करने का उपयोग कर रहा है। इस तरह, मैं यह सुनिश्चित कर सकता हूं कि जोड़ा संरेखण एक स्थान है (जब तक मैं कम से कम :set ts=1 नहीं था) और मैन्युअल रूप से रिक्त स्थान की अच्छी मात्रा जोड़ें। यह गति के मामले में अभी भी ठीक है और मेरे लिए कम से कम विचलित व्यवहार प्रतीत होता है!

+0

आप अपने स्वयं के उत्तर को स्वीकार किए जाने के रूप में चिह्नित कर सकते हैं! –

3

आपके अलावा: सेट cino = (1, आप 'preserveindent' और 'copyindent' विकल्पों में भी रूचि रख सकते हैं यदि आप पहले से उनका सामना नहीं कर चुके हैं। वे आपकी समस्या को पूरी तरह से हल नहीं करते हैं, लेकिन वे मदद करने के लिए कुछ रास्ता तय करें।

+0

हां, मैंने उन्हें सामना किया है। लेकिन क्या करुणा है कि अभी भी इतने सारे नियम हैं कि सभी इंडेंटेशन की गणना करते हैं और मिश्रित टैब/रिक्त स्थान के साथ इंडेंट ... –