2013-10-11 4 views
20

में एक कॉलन (:) टाइपिंग लाइन इंडेंट जब भी मैं अजगर मोड में विम में एक : चरित्र संलग्न, यह या तो से:रोकें विम जब अजगर

  • इंडेंट लाइन
  • dedents लाइन
  • कुछ भी नहीं

यह करने की कोशिश भी कर रहा है, और मैं इस व्यवहार से कैसे छुटकारा पा सकता हूं?

+1

आपको लगता है कि यह एक पंक्ति इंडेंट करने का प्रयास क्यों कर रहा है? जैसा कि, एक ':' वर्ण का उपयोग फ़ंक्शन या नियंत्रण कथन को दर्शाने के लिए किया जाता है ... – YXD

+2

आप वास्तव में किस तरह का व्यवहार चाहते हैं? – aIKid

+0

यह मेरे साथ हुआ, लेकिन मैंने गलती से उबंटू में जर्मन से यूएस कीबोर्ड तक स्विच किया। – alex

उत्तर

4

यह सहायक होने की कोशिश कर रहा है। आप बंद,

:setlocal noautoindent 
:setlocal nocindent 
:setlocal nosmartindent 
:setlocal indentexpr= 

वर्तमान फ़ाइल के लिए सभी ऑटो खिसकने चालू करना चाहते हैं या तो आप अपने vimrc फ़ाइल में सेट जोड़ सकते हैं। आप इन प्रति फ़ाइल प्रकार भी कर सकते हैं। here

18

कुछ कुंजी, दबाए जाने पर, विम की इंडेंट सुविधा को ट्रिगर करेंगे, जो मौजूदा लाइन पर सही मात्रा में इंडेंटेशन सेट करने का प्रयास करेगी। (आप सामान्य मोड में == टाइप करके इसे मैन्युअल रूप से ट्रिगर कर सकते हैं।)

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

सबसे पहले, :set indentexpr? निष्पादित करें। अगर यह अस्वीकार्य है (मैं इसे पायथन के लिए उम्मीद करता हूं), तो indentexpr मोड का उपयोग किया जा रहा है। इस मामले में, :set indentkeys? निष्पादित करने से आपको ट्रिगर कुंजी की सूची मिलती है। कोलन को हटाने के लिए, :setlocal indentkeys-=: निष्पादित करें।

तो indentexpr खाली है, तो आप शायद cindent मोड का उपयोग कर रहे हैं, और :set cindent? आपको बताएगा कि cindent निर्धारित है। इस मामले में, पहले जैसा ही करें, लेकिन indentkeys के बजाय cinkeys का उपयोग करें। (ध्यान दें कि indentexpr मोड cindent मोड से अधिक प्राथमिकता लेता है।)

+2

लेकिन यह सत्रों में नहीं टिकेगा, और '.vimrc' में जोड़ने से कोई भी मदद नहीं करेगा, क्योंकि पाइथन के लिए कस्टम सेटिंग्स बाद में लोड की जाती हैं। –

+1

इसे डालने का प्रयास करें। Vim/after/ftplugin/python.vim –

+0

मेरे लिए, एक पायथन फ़ाइल संपादित करना, 'इंडेंटकी सेट करें?' 'इंडेंटकी = 0 {, 0},!^एफ, ओ, ओ, ई, <:>, = elif, = को छोड़कर '। देखें कि कोलन निर्दिष्ट किया गया है, वर्णों की तुलना में अधिक से कम और कम-अक्षर '<:>' के अंदर। इसे मेरे मामले में काम करने के लिए मुझे यह करना पड़ा: ': setlocal indentkeys- = <:>'। –

5

Nathan Grigg's answer मुझे सही रास्ते पर सेट करें। मुझे अपने सेटअप के लिए कुछ बदलाव करना पड़ा।

मुझे :setlocal indentkeys-=<:> का उपयोग करना पड़ा, क्योंकि मेरे मामले में :set indentkeys?indentkeys=0{,0},!^F,o,O,e,<:>,=elif,=except दिखाया गया था।

इसके अलावा, :setlocal indentkeys-=<:>.vim/after/ftplugin/python.vim में परिवर्तन को स्थायी बनाने के लिए काम नहीं किया। मैंने पाया कि एक अंतर्निहित विम पायथन इंडेंट फ़ाइल है जो बाद में ftplugin फ़ाइल के बाद चलती है।

निदान करने के लिए, संपादन के लिए पाइथन फ़ाइल खोलें, और :scriptnames चलाएं। यह आपको प्राथमिकता के क्रम में चलाने वाली सभी विम स्क्रिप्ट्स की एक सूची दिखाएगा। उस सूची के निचले भाग में लिपियों को हाल ही में लागू किया गया है, और प्राथमिकता ले ली गई है। अधिक जानकारी के लिए this question on SuperUser देखें।

जब मैंने ऐसा किया, तो उसने मुझे /my-install-path/vim/7.4.1830/share/vim/vim74/indent/python.vim पर एक अंतर्निहित विम फ़ाइल दिखायी। निश्चित रूप से, यह इंडेंट कुंजी के हिस्से के रूप में <:> सेट कर रहा था।

इसे ठीक करने के लिए, मैंने .vimrc में एक autocommand सेट किया है, और यह वास्तव में अंतिम शब्द प्राप्त करता है।

autocmd FileType python setlocal indentkeys-=<:> 

अद्यतन

मैं सब के बाद :setlocal indentkeys-=: जोड़ने के लिए किया था। मेरे पास मेरे .vimrc में अब क्या है।

autocmd FileType python setlocal indentkeys-=<:> 
autocmd FileType python setlocal indentkeys-=: 
संबंधित मुद्दे