2013-01-18 4 views
5

विन 7 के तहत विम मेरी शिफ्टविड्थ सेटिंग को उस चीज़ पर बदल देता है जिसे मैं केवल .sml फ़ाइलों के लिए नहीं चाहता हूं।विम .sml फ़ाइलों के लिए shiftwidth बदलता है

जो कुछ मैं चाहता हूं वह सब कुछ केवल रिक्त स्थान के साथ इंडेंट किया जाए, और सबकुछ हमेशा 4 रिक्त स्थान हो।

set nocompatible 
set expandtab 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 

set guifont=Consolas:h9:cANSI 
source $VIMRUNTIME/vimrc_example.vim 
source $VIMRUNTIME/mswin.vim 
behave mswin 

filetype plugin indent on 

" Set the tab width 
let s:tabwidth=4 
exec 'set tabstop=' .s:tabwidth 
exec 'set shiftwidth=' .s:tabwidth 
exec 'set softtabstop='.s:tabwidth 

जब मैं पहली बार लोड नहीं फाइल के साथ विम शुरू, :set shiftwidth रिटर्न shiftwidth=4: हालांकि मैं कई रूपों की कोशिश की है यह, मेरे वर्तमान _vimrc फ़ाइल की सामग्री है। जब मैं एक .py या .php फ़ाइल खोलता हूं, तो यह अभी भी shiftwidth=4 देता है। लेकिन जब मैं एक .sml फ़ाइल खोलता हूं या बस .sml एक्सटेंशन के साथ रिक्त फ़ाइल को सहेजता हूं, तो यह shiftwidth=2 में बदल जाता है। उस सत्र के लिए :set shiftwidth=2 मैन्युअल रूप से सेट करना, लेकिन जब भी मैं एक .sml फ़ाइल खोलता हूं तो मुझे इसे करना होगा।

यह केवल खुली .sml फ़ाइल वाले बफर को प्रभावित करता है। बिना सहेजे गए बफर या किसी अन्य फ़ाइल प्रकार वाले एक ही समय में shiftwidth = 4 दिखाएं।

मैं पहले फ़ाइल टाइप प्लगइन इंडेंट चीज़ का उपयोग नहीं कर रहा था, लेकिन कुछ खोज के बाद ऐसा लगता था कि समस्या हो सकती है। मेरी ftplugin फ़ोल्डर में कोई फ़ाइल नहीं थी, इसलिए मैं अपने _vimrc, बनाया sml.vim को filetype plugin indent on जोड़ा गया है और (फिर ftplugin फ़ोल्डर में रख दें, कई रूपों कोशिश कर:

set expandtab 
set tabstop=4 
set shiftwidth=4 
set softtabstop=4 

" Set the tab width 
let s:tabwidth=4 
exec 'set tabstop=' .s:tabwidth 
exec 'set shiftwidth=' .s:tabwidth 
exec 'set softtabstop='.s:tabwidth 

मैं जानता हूँ कि sml.vim किया जा रहा है पढ़ा क्योंकि मैं पहली बार में यह में त्रुटियों रखा, और वे पकड़े गए थे।

अगर यह प्रासंगिक है, लेकिन मेरी indent.vim में .sml के बारे में कुछ भी नहीं है, और मेरे मांगपत्र फ़ोल्डर रिक्त है सुनिश्चित नहीं हैं।

फिर भी जब भी मैं एक .sml फ़ाइल लोड करता हूं तो विम अभी भी shiftwidth = 2 सेट करता है। मैं जानना चाहता हूं कि क्यों।

अपडेट: इंडेंट फ़ोल्डर जो मैंने कहा था खाली था vim \ vimfiles \ indent था। उत्तर और टिप्पणियों के बाद मैंने sml.vim की खोज की और एक और इंडेंट फ़ोल्डर, vim \ vim73 \ indent मिला। मैंने sml.vim संपादित किया और shiftwidth = 2 को shiftwidth = 4 में बदल दिया और समस्या हल हो गई।

+3

एक .sml फ़ाइल और रन 'लोड: क्रिया सेट sw' - यह आपको बता जाएगा जहां यह पिछले था सेट। – sidyll

उत्तर

6

यह कुछ फ़ाइल प्रकार प्लगइन के कारण सबसे अधिक संभावना है। यदि यह डिफ़ॉल्ट एक सही ठीक डाल किया जाएगा (अर्थात खुद vim के साथ भेज दिया) उचित सेट

setlocal ts< sw< sts< " Set ts, sw and sts to global values 

^~/.vim/after/ftplugin/sml.vim में था। लेकिन विम वितरण में ऐसी कोई सेटिंग नहीं है। इस मामले में उपर्युक्त समाधान काम कर सकता है (उस स्थान के आधार पर जहां यह गैर-मानक प्लगइन स्थित है), लेकिन verb set sw पहले जांचना बेहतर होगा और जांचें कि &sw परिभाषित प्लगइन ए है) जिसकी आपको वास्तव में आवश्यकता है या बी) कॉन्फ़िगर करने योग्य ताकि सेट after/ निर्देशिका का उपयोग किये बिना अक्षम किया जा सके।

अद्यतन: यह यह वास्तव में प्रकट होता है डिफ़ॉल्ट एक है, लेकिन indent स्क्रिप्ट और नहीं ftplugin रूप @Nikita Kouevda बताया है। इस प्रकार आपको इस लाइन को ~/.vim/after/indent/sml.vim में रखना होगा।


" Set the tab width 
let s:tabwidth=4 
exec 'set tabstop=' .s:tabwidth 
exec 'set shiftwidth=' .s:tabwidth 
exec 'set softtabstop='.s:tabwidth 

उपयोग इस बजाय:

let s:tabwidth=4 
let &tabstop  = s:tabwidth 
let &shiftwidth = s:tabwidth 
let &softtabstop = s:tabwidth 

या

let [&tabstop, &shiftwidth, &softtabstop]=repeat([4], 3) 
+1

ध्यान दें कि ओपी 'फ़ाइल टाइप इंडेंट' का उपयोग करता है, इसलिए '$ VIMRUNTIME/इंडेंट/sml.vim' 'shiftwidth' को सेट करता है 2. चूंकि' इंडेंट 'फ़ाइलों को' ftplugin' फ़ाइलों के बाद सोर्स किया जाता है, '~/.vim/after/इंडेंट/sml.vim' का उपयोग 'VIMRUNTIME/इंडेंट/sml.vim' को ओवरराइड करने के लिए किया जाना चाहिए। –

+0

@NikitaKouevda धन्यवाद, 'ftplugin' में रखी गई ऐसी सेटिंग्स में उपयोग किया गया और केवल यह और वाक्यविन्यास निर्देशिकाओं की जांच की गई। – ZyX

+0

धन्यवाद आप दो! – gotube

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