2009-07-20 11 views
6

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

क्या यह किया जा सकता है? इस तरह

+0

मुझे दृढ़ विश्वास है कि यह किया जा सकता है। मुझे नहीं लगता कि यह किसी भी आसान होगा, हालांकि। –

उत्तर

5

हां। Smart Tabs प्लगइन का उपयोग करें।

यह स्क्रिप्ट आपको लाइन की शुरुआत के लिए अपनी सामान्य टैब सेटिंग्स का उपयोग करने की अनुमति देती है, और टैब को कहीं और स्थान के रूप में विस्तारित किया जाता है। यह प्रभावी ढंग से 'संरेखण' से 'इंडेंट' को अलग करता है।

<tab> लाइन की शुरुआत (पहले गैर-अंतरिक्ष चरित्र से पहले) में एक टैब डालने के लिए संपादक टैब सेटिंग्स का उपयोग करता है, और अन्यथा रिक्त स्थान प्रविष्ट करता है।

<BS> आला smarttab

टैब या 'विस्तार' टैब को हटाने के लिए संपादक टैब सेटिंग का उपयोग करता है विम समारोह तर्क लाइन अप करने के लिए, .vimrc को

set cindent 
set cinoptions=(0,u0,U0 

जोड़ें। प्लगइन जैसे खाली स्थान के सांकेतिक शब्दों में बदलना होगा:

int f(int x, 
......int y) { 
--->return g(x, 
--->.........y); 
} 

यह "x" और "y" के संरेखण बनाता टैब आकार (tabstop) के स्वतंत्र।

4

कोशिश कुछ:

function! TabMaybeIndent() 
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$' 
     return "\<Tab>" 
    else 
     return " " 
    endif 
endfunction 

set noexpandtab 
imap <Tab> <C-r>=TabMaybeIndent()<CR> 
+0

यह एक उचित दृष्टिकोण की तरह दिखता है। मामूली समायोजन के साथ, आप अंधेरे से 4 रिक्त स्थान डालने की बजाय मौजूदा 'सॉफ्टटैबॉप' सेटिंग का भी पालन कर सकते हैं। – ephemient

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