फिलेटाइप द्वारा विम व्हाट्सएप वरीयताओं को सेट करना


155

मेरे काम पर, मुझे इंडेंटेशन के लिए घर की शैली का पालन करना आवश्यक है, जो निम्नानुसार है:

  • HTML और रूबी कोडिंग करते समय 2 स्थान
  • टैब को जावास्क्रिप्ट के साथ कोडित करते समय टैब = 4 की सिफारिश की जाती है

फ़िलाटाइप प्रति भिन्न व्हाट्सएप वरीयताओं को निर्दिष्ट करने का सबसे अच्छा तरीका क्या है?



इन सभी जवाबों ने मुझे और भ्रमित कर दिया। समस्या यह है कि विकल्प वरीयता के लिए हैं। स्वीकृत उत्तर में एक अच्छा वाक्यविन्यास है। यह एक उत्कृष्ट मार्गदर्शिका थी: vimcasts.org/transcripts/2/en
Mikael Lindlöf

जवाबों:


245

कई तरीके हैं, लेकिन यहाँ एक सरल, समझने में आसान तरीका है। इन पंक्तियों को अपने साथ जोड़ें ~/.vimrc:

autocmd FileType html setlocal ts=2 sts=2 sw=2
autocmd FileType ruby setlocal ts=2 sts=2 sw=2
autocmd FileType javascript setlocal ts=4 sts=4 sw=4

27
ts = 'रिक्त स्थान की संख्या जो <Tab> फ़ाइल में' sts = 'रिक्त स्थान की संख्या का उपयोग करती है, जो <Tab> का उपयोग करते हुए विवरणों के लिए (ऑटो) इंडेंट स्टेप के लिए' sw = 'स्थानों का उपयोग करते हुए देखते हैं: vimdoc.siveforge .net / htmldoc / quickref.html # विकल्प-सूची
zdsbs

मुझे माणिक के लिए कम से कम एक्सपेंडेब को जोड़ने की जरूरत है, यहां 'बहुत ज्यादा php' द्वारा जवाब देखें
माइकल ड्यूरेंट

87

पीटर का जवाब एकदम सीधा है, लेकिन दुर्भाग्य से विकल्प सही नहीं हैं। आपको इसके बजाय निम्नलिखित विकल्पों का उपयोग करने की आवश्यकता है:

autocmd Filetype html setlocal ts=2 sw=2 expandtab
autocmd Filetype ruby setlocal ts=2 sw=2 expandtab
autocmd Filetype javascript setlocal ts=4 sw=4 sts=0 noexpandtab

यह भी नोट करें:

  • आप उपयोग करके टैब शो टैब वर्ण बना सकते हैं :set list
  • एक बार जब आपके पास टैब / स्पेस विकल्प सही तरीके से सेट हो जाता है, तो आप :retab!कमांड का उपयोग करके फाइल को रिपेयर (टैब या इसके विपरीत स्पेस बदल सकते हैं) कर सकते हैं ।

2
expandtabओवर का लाभ क्या हैsts=2
जेम्स मैकमोहन

12
@JamesMcMahon विस्तारटैब सभी टैब को रिक्त स्थान तक विस्तारित करता है। sts (सॉफ्टटैबटॉप) इंसेंट के लिए रिक्त स्थान और टैब सम्मिलित करता है: टैब्सटॉप के आकार के आधार पर इंडेंट में जितने भी टैब फिट होंगे, और उसके बाद स्पेस। बेशक, अगर एक्सपैंडटैब चालू है, तो सम्मिलित होने वाले सभी टैब रिक्त स्थान में परिवर्तित हो जाते हैं। stackoverflow.com/questions/1562336/… आगे मदद कर सकता है। टैब का विस्तार किए बिना, पीटर का जवाब ऐसे टैब सम्मिलित करेगा जो 2 वर्ण चौड़े हैं, न कि रिक्त स्थान।
ajmccluskey

35

पीटर के उत्तर के लिए +1, लेकिन विम एक और समाधान भी प्रदान करता है। यदि आप एक से अधिक जटिल कुछ करना चाहते हैं setlocal, जैसे एक ही बार में विकल्पों, आदेशों और मैपिंग के पूरे समूह को स्थापित करना, तो विम का फ़िलाटाइप प्लगइन फीचर बचाव में आता है।

आप की जरूरत है filetype plugin onया filetype plugin indent onअपने में .vimrc, और फिर बनाने के लिए एक प्लगइन उदाहरण के लिए रूबी आप बना सकते हैं ~/.vim/ftplugin/ruby.vim। तकनीकी तौर पर तुम यहाँ की तरह किसी भी आप आदेशों का उपयोग कर सकते हैं, जब एक रूबी फ़ाइल लोड किया जाता है चलाने के लिए, लेकिन अनुशंसित लोगों में शामिल हैं setlocal, map <buffer>, command -buffer, और परिभाषित कार्य करता है। उपयोगकर्ता गाइड में बहुत अधिक जानकारी है; यदि आप स्क्रिप्टिंग विम से बहुत परिचित हैं तो कूदें :help 41.11, अन्यथा पढ़ें :help usr_40और :help usr_41


10

एक अच्छी विम स्क्रिप्ट भी है: डिटेक्टइंडेंट जो आपके द्वारा खोली गई फ़ाइल के इंडेंटेशन का पता लगाने की कोशिश करता है। यदि आप विभिन्न कोडिंग शैली के साथ कई फ़ाइलों के साथ काम करते हैं तो यह बहुत आसान है।

मैं अपने .vimrc में एक ऑटोकॉमैंड का उपयोग करता हूं :

:autocmd BufReadPost * :DetectIndent 

0

जब भी टैब कुंजी दबाया जाता है, तो अंतरिक्ष वर्ण डालने के लिए, 'एक्सपेंडेब' विकल्प सेट करें:

:set expandtab

अगला कदम टैब वर्ण दबाए जाने पर डाले जाने वाले स्थान वर्णों की संख्या को नियंत्रित करना है, 'टैबस्टॉप' विकल्प सेट करें। उदाहरण के लिए, टैब के लिए 2 स्थान सम्मिलित करने के लिए, उपयोग करें:

:set tabstop=2

रेफरी: http://vim.wikia.com/wiki/Converting_tabs_to_spaces

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