मैं filetype के आधार पर डिफ़ॉल्ट इंडेंटेशन को कैसे बदल सकता हूं?


34

मैं जिस प्रकार की फ़ाइल पर काम कर रहा हूँ, उसके आधार पर अलग-अलग इंडेंटेशन चाहते हैं। उदाहरण के लिए, एक .cफ़ाइल पर काम करना चाहूँगा जो मेरा इंडेंटेशन 4 रिक्त स्थान होगा। उन .htmlफ़ाइलों में जिन्हें मैं टैब के साथ काम करना चाहता / चाहती हूं।

मैं इसे कैसे प्राप्त करूं?

जवाबों:


25

सबसे अच्छी विधि है उन सेटिंग्स को अंदर रखना ~/.vim/after/ftplugin/<filetype>.vim

HTML के लिए (यह मानकर कि आपको 4 वर्णों वाले टैब चाहिए):

~/.vim/after/ftplugin/html.vim

setlocal shiftwidth=4
setlocal softtabstop=4
setlocal noexpandtab

एक फुटप्लगिन का उपयोग करना ऑटोकॉमैंड्स का उपयोग करने के लिए पसंद किया जाता है क्योंकि विम पहले से ही अपने द्वारा जांच करता है और पहले से ही पर्याप्त फुटप्लगिन को स्रोत करने की कोशिश करता है इसलिए पहिया को और अधिक जांच करने और पहिया को फिर से लागू करने का कोई कारण नहीं है।

- संपादित करें -

मान लिया जाये कि आप filetype plugin onअपने में vimrc- जो आप करना चाहिए - विम फ़ाइलों को आप संपादित की फ़ाइल प्रकार का पता लगाने के एक बार सही फ़ाइल प्रकार मिल गया और बफर के लिए सेट किया जाता है की कोशिश करेंगे और,, स्रोत के लिए इन मानक स्थानों में इसी ftplugin का प्रयास करें:

$VIMRUNTIME/ftplugin/html.vim
~/.vim/ftplugin/html.vim
~/.vim/ftplugin/after/html.vim

यह सब स्वचालित रूप से होता है, यदि आपका फ़ाइल नाम Vim द्वारा पहचाना जाता है, तो किसी भी फ़ाइल प्रकार पहचान तर्क को जोड़ने का कोई कारण नहीं है: बस अपनी सेटिंग्स को सही ftplugin में जोड़ें और आप अच्छे हैं।


क्या मुझे किसी तरह से फेल्पुगिन को सक्रिय करने की आवश्यकता है या फ़ाइल को स्वचालित रूप से सक्रिय करेगा?
डेल्टालिमा

सुनिश्चित करें कि आप filetype plugin indent onमें है vimrc
romainl

1
@DeltaLima vim का एक रास्ता है कि यह सेटिंग्स के लिए जाँच करता है। जब तक filetype plugin onसेट किया जाता है, विम के पथ में इसके पथ में फ़ाइलें ftplugin/<filetype>.vimऔर after/ftplugin/<filetype>/vimफ़ाइलें शामिल होती हैं ।
davidlowryduda

@ डेल्टलिमा, कृपया मेरा संपादन देखें।
romainl

14

आप अपने में ऑटोकॉमैंड्स के साथ ऐसा कर सकते हैं .vimrc

उदाहरण के लिए, मेरे पास एक फ़ंक्शन है html_like_modeजो HTML फ़ाइलों को संपादित करने के लिए विभिन्न चीजों को सेट करता है। मेरे पास .vimrc, मेरे पास है:

au BufNewFile,BufRead *.html call s:html_like_mode()

फ़ाइल एक्सटेंशन की कुंजी बंद। यदि आपके पास सक्षम है, तो आप फ़िलाटाइप से भी कुंजी ले सकते हैं:

au FileType perl setlocal equalprg=perltidy

जैसा कि आप देख सकते हैं, आप इसे किसी भी कमांड में कर सकते हैं। तो आप आसानी से setlocal shiftwidth 4अपने * .c फ़ाइलों के लिए कर सकते हैं ।


9

augroupआपको संबंधित ऑटोकॉमैंड्स को नामित समूहों में समूहित करने की अनुमति देता है। ( ऑटोकॉमैंड ग्रुप्स के बारे में जानने के लिए यहां देखें ।) हम augroupऑटोकॉमैंड्स को ~/.vimrcएक तरह से जोड़ने के लिए एस का उपयोग करते हैं जो हर बार जब हम इसे स्रोत बनाते हैं तो डुप्लिकेट नहीं जोड़ेंगे।

augroup vimrc
  autocmd!
augroup END

autocmd vimrc FileType html setlocal shiftwidth=4 tabstop=4

2
यह उपयोगी होगा यदि आप बताएंगे कि यह क्या करता है और इसे कैसे स्थापित किया जाए, हर किसी को नहीं पता होगा;)
सेठ

3

खेतों में प्रयुक्त autocmd और फ़ाइल-प्रकार

autocmd FileType html setlocal shiftwidth=4 tabstop=4
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.