2010-07-11 15 views
13

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

new function($) { 
    $.fn.setCursorPosition = function(pos) { 
     if ($(this).setSelectionRange) { 
     $(this).setSelectionRange(pos, pos); 
     } else if ($(this).createTextRange) { 
     var range = $(this).createTextRange(); 
     range.collapse(true); 
     range.moveEnd('character', pos); 
     range.moveStart('character', pos); 
     range.select(); 
     } 

परिणाम बल्कि बेतुका है:

 new function($) { 
     $.fn.setCursorPosition = function(pos) { 
     if ($(this).setSelectionRange) { 
     $(this).setSelectionRange(pos, pos); 
     } else if ($(this).createTextRange) { 
     var range = $(this).createTextRange(); 
     range.collapse(true); 
     range.moveEnd('character', pos); 
     range.moveStart('character', pos); 
     range.select(); 
     } 

मैं set syntax=javascript निर्धारित किया है, और मैं करने के लिए निर्धारित किया है filetype:

filetype detection:ON plugin:ON indent:ON 

हालांकि मैंने इसके हर क्रमपरिवर्तन की कोशिश की है। मैंने smartindent, autoindent, और cindent के प्रत्येक क्रमपरिवर्तन की कोशिश की है, लेकिन ऐसा लगता है कि विम को अपेक्षित इंडेंटेशन देने का सही प्रभाव नहीं है। मैंने tabstop=4 सेट किया है।

मैंने javascript.vim, और IndentAnything स्थापित किया है, हालांकि उनका कोई प्रभाव नहीं प्रतीत होता है।

मैं जावास्क्रिप्ट में उचित रूप से विम इंडेंटिंग के तरीके के बारे में किसी भी सुझाव के लिए बहुत आभारी हूं।

+1

साइड नोट: जावास्क्रिप्ट.विम और इंडेंट स्थापित करने से कुछ भी मेरे लिए एक समस्या हल हो गई है जहां विम केवल कुछ पंक्तियों को सही ढंग से इंडेंट कर रहा था। – Wulfhart

उत्तर

4

दो समापन ब्रेसिज़ जोड़ना और vi{ के साथ पूरे ब्लॉक का चयन करने के लिए gvim 7.2 में मेरे लिए उचित स्वचालित इंडेंटेशन प्रदान नहीं किया गया है। आप देख सकते हैं कि कमांड लाइन पर --noplugins ध्वज के साथ vim शुरू करके कोई गलती प्लगइन इसे गड़बड़ कर रहा है या नहीं। और फिर प्रयत्न करें।

3

मुझे "यह मेरे लिए काम करता है" जैसे कुछ असहज कहने से नफरत है, लेकिन ऐसा करता है। यहां तक ​​कि मेरे .vimrc और सभी प्लगइन्स में कुछ भी नहीं के साथ, मुझे सही इंडेंटेशन मिलता है।

new function($) { 
    $.fn.setCursorPosition = function(pos) { 
     if ($(this).setSelectionRange) { 
      $(this).setSelectionRange(pos, pos); 
     } else if ($(this).createTextRange) { 
      var range = $(this).createTextRange(); 
      range.collapse(true); 
      range.moveEnd('character', pos); 
      range.moveStart('character', pos); 
      range.select(); 
     } 

आप --noplugins स्विच के साथ vim लोड हो रहा है और अस्थायी रूप से चलती/अपने .vimrc का नाम बदलने अगर यह अभी भी काम नहीं करता है देखने के लिए करने की कोशिश की है? मुझे संदेह है कि आपके .vimrc या किसी अन्य प्लगइन में एक और सेटिंग संघर्ष कर सकती है।

3

मेरे लिए यह काम करता है (बहुत उपयोगी कथन नहीं, मुझे पता है ;-))। मुझे लगता है कि फ़ाइल प्रकार सही ढंग से नहीं पता चला है।

:set filetype 

क्या कहता है? इसे "जावास्क्रिप्ट" की रिपोर्ट करनी चाहिए।

[संपादित करें] संकेत: कृपया ध्यान दें कि 'filetype' नामक एक विकल्प है और एक कमांड कहा जाता है: filetype। विकल्प के लिए सहायता प्राप्त करने के लिए: कमांड के लिए 'filetype' में मदद करें: help: filetype।

+0

@ हबी: धन्यवाद। यह याद करने में शर्म की बात होगी, लेकिन हां ': सेट फ़ाइल टाइप' 'जावास्क्रिप्ट 'है। :) –

+0

@ ब्रायन एम। हंट: हम्म, शायद इंडेंटेशन 0 है (मुझे नहीं पता कि यह संभव है या नहीं, लेकिन यदि यह संभव है तो यह एक कारण हो सकता है आपकी समस्या के लिए)। "सेट शिफ्टविड्थ" और ": सेट सिनेपशन" क्या कहते हैं? – Habi

+0

@ हबी: ': शिफ्टविड्थ सेट करें 'shiftwidth = 4' और' cino सेट करें पेंशन ''cinoptions =' है। Hrmm। –

3

मैं समस्या थी MacVim 7.2 के साथ दूसरे दिन और एक लुआ फ़ाइल है कि सही ढंग से इंडेंट नहीं होता - set syntax, set filetype और filetype indent on उपयोग करने के बाद भी, इसे सही ढंग से फ़ाइल इंडेंट नहीं था।

filetype plugin indent on 

मेरी .gvimrc फाइल करने के लिए समस्या हल हो जाती, कम से कम मेरे लिए:

मैं जोड़ने की खोज की। YMMV।

+0

उत्तर और खुशी के लिए धन्यवाद आपने इसे हल किया। दुर्भाग्य से यह मदद नहीं कर रहा था। –

9

ओह मैन, मैंने बस एक ही समस्या का पता लगाने में कुछ घंटे बिताए।

यदि आपके पास filetype indent on (जो आप करते हैं) है, तो कुछ अलग इंडेंट सेटिंग्स कहीं भी फ़ाइल द्वारा सेट की जा सकती हैं। आप देख सकते हैं आप verbose set <option>? का उपयोग करते हैं, जहां यह स्थापित किया जा रहा है और क्या यह करने के लिए सेट है:

cindent 
Last set from $VIMRUNTIME/indent/javascript.vim 

कहाँ:

:verbose set autoindent? 
:verbose set cindent? 
:verbose set smartindent? 
:verbose set indentexpr? 

डिफ़ॉल्ट रूप से, आप केवल cindent डिफ़ॉल्ट मांगपत्र फ़ाइल द्वारा निर्धारित देखने के लिए उम्मीद थी $VIMRUNTIME वह मार्ग है जब आप :echo $VIMRUNTIME चलाते हैं।

अन्य सभी तब तक सेट नहीं किए जाएंगे जब तक कि आप उन्हें सक्षम न करें (आपके vimrc या प्लगइन में)।

मेरे लिए, मैं एक प्लगइन (eclim) कि identexpr की स्थापना की गई थी और इस मुद्दे के कारण था:

identexpr=EclimGetJavascriptIndent(V:lnum) 
Last set from ~/.vim/bundle/eclim/indent/javascript.vim 
+0

इसके लिए धन्यवाद! आपने मुझे एक छोटी गाड़ी प्लगइन का पता लगाने में भी मदद की।:) – imiric

+1

वाह, धन्यवाद। आपने बस मुझे एक अस्पष्ट रूप से टूटा विम डीबग करने में मदद की। यह जेएस फाइलों में autoindent नहीं होगा। यह '.vim/bundle/vim-jsx' पर एक बंडल बन गया (जिसे मुझे अभी निकालना पड़ा था, क्योंकि मैंने अभी भी https://github.com/othree/yajs.vim पर स्विच किया है)। धन्यवाद। यदि अवसर कभी भी प्रस्तुत करता है, तो मैं आपको एक बियर खरीदना चाहता हूं। –

4

मैं कुछ समय पहले एक ही समस्या थी और समाधान प्लगइन "vim-जावास्क्रिप्ट" था। यह सिमैक्स और इंडेंट प्लगइन्स प्रदान करने के लिए vim के लिए जावास्क्रिप्ट बंडल है।

https://github.com/pangloss/vim-javascript

स्थापना बहुत सरल है। आप vundle उपयोग कर रहे हैं

cd ~/.vim/bundle 
    git clone https://github.com/pangloss/vim-javascript.git 

पालन चरणों का उपयोग करें:

आप pathogen का उपयोग कर रहे हैं, तो अनुवर्ती चरणों का उपयोग करें

अपने vimrc फाइल करने के लिए अनुवर्ती पंक्ति जोड़ दें:

Plugin "pangloss/vim-javascript" 

और इसे इंस्टॉल करें:

:so ~/.vimrc 
:PluginInstall 
0

मेरे लिए एक से अधिक '(' चरित्र 'से पहले' 'चरित्र' से पहले '=' चरित्र '=' द्वारा उपयोग किए गए इंडेंटेशन एल्गोरिदम को बदलना प्रतीत होता है। अन्य स्कोप क्षेत्रों '{...}' को छोड़कर फ़ाइल के सभी हिस्सों के लिए '(' ठीक करने के लिए 'लग रहा था' ('को खोलने के लिए लग रहा था' ('ओपनिंग लाइन'

मैं उपयोग कर रहा हूं vim 7.4 lubuntu