2010-01-06 10 views
11

मेरे पास CentOS 5 पर Vim 7 (बढ़ाया गया) है, और यह जाने के लिए तैयार सभी सामान्य विम प्लगइन्स/स्क्रिप्ट के साथ आता है।विम पायथन इंडेंटेशन काम नहीं कर रहा है?

$ find /usr/share/vim/vim70/ -name \*python\* 
/usr/share/vim/vim70/syntax/python.vim 
/usr/share/vim/vim70/ftplugin/python.vim 
/usr/share/vim/vim70/indent/python.vim 
/usr/share/vim/vim70/autoload/pythoncomplete.vim 

मुझे लगता है कि जब किसी फ़ाइल .py (vim file.py) में समाप्त होने वाले उद्घाटन यह स्वचालित रूप से इन प्लग-इन लोड होगा लगता होगा, लेकिन मुझे यकीन है कि ऐसा है नहीं कर रहा हूँ। मुझे क्या चाहिए:

प्रेस टैब और चार रिक्त स्थान प्राप्त करें। सूट, सशर्त आदि के लिए ऑटो इंडेंट अगली पंक्ति

मेरे पास यह मेरी .vimrc फ़ाइल में स्पष्ट रूप से टैबस्टॉप, शिफ्टविड्थ इत्यादि सेट करके काम कर रहा है। क्या यह Python फाइलों के लिए नहीं है? मुझे इन चीजों को अपने .vimrc में क्यों सेट करना है? मैं इन सुविधाओं को विम प्लगइन्स से कैसे प्राप्त करूं?

वर्तमान .vimrc:

syntax on 
set hls 
set expandtab 
set textwidth=0 
set tabstop=4 
set softtabstop=4 
set shiftwidth=4 
set autoindent 
set backspace=indent,eol,start 
set incsearch 
set ignorecase 
set ruler 
set wildmenu 
set smarttab 
filetype indent on 
filetype on 
filetype plugin on 

उत्तर

2

सेटिंग tabstop, shiftwidth, आदि ... अपने vimrc में सही है। ये आपकी वैश्विक सेटिंग्स सेट करते हैं, साथ ही फ़ाइल प्रकार-विशिष्ट इंडेंटेशन समर्थन के पैरामीटर के रूप में कार्य करते हैं।

भाषा इंडेंटेशन प्लगइन्स इन सेटिंग्स का उपयोग करते हैं, लेकिन आमतौर पर भाषा के लिए उपयुक्त इंडेंट अभिव्यक्ति (:he inde) भी सेट करते हैं। इस प्रकार पाइथन इंडेंटर को ब्लॉक ओपनिंग कथन (डीफ़, क्लास, ... के लिए) के बाद स्वचालित रूप से इंडेंट करना चाहिए, और बंद होने के बाद समर्पण (वापसी, पास, जारी रखें ...) और टीएस, एस, ... आपने सेट किया है।

यदि आप अभी भी अनिश्चित हैं कि प्लगइन बफर के लिए लोड हो रहा है, तो पता लगाने के लिए पहचान, प्लगइन और इंडेंट सेटिंग्स और :set ft? दिखाने के लिए बस :filetype करें।

+0

तो संक्षेप में प्रस्तुत करने ../indent/python.vim फ़ाइल मेरे लिए tabstop, shiftwidth, आदि स्थापित करने में सक्षम नहीं है ... इसलिए वे vimrc भीतर निर्दिष्ट किया जाना चाहिए? अगर मैं फ़ाइल टाइप के आधार पर टैबस्टॉप अलग होना चाहता था तो क्या होगा? क्या मैं इन vimrc सेटिंग्स को इंडेंट/python.vim फ़ाइल में रख सकता हूं ताकि केवल उन्हें पायथन फाइलों के लिए लोड किया जा सके? – CarpeNoctem

+0

आप उन सेटिंग्स को इंडेंट/python.vim में जोड़ सकते हैं और परिणाम प्राप्त कर सकते हैं, लेकिन एक बेहतर तरीका फ़ाइल प्रकार विशिष्ट सेटिंग्स को ऑटोकॉड्स के रूप में जोड़ना होगा जो बफर लोड होने के बाद चलाएंगे। (: वह एयू) – abeyer

5

मेरी समझ यह है कि python.vim फ़ाइल संभवतः सिंटैक्स-हाइलाइटिंग फ़ाइल है, क्योंकि पाइथन फ़ाइलों को कई तरीकों से इंडेंट किया जा सकता है। PEP8 चार रिक्त स्थान निर्धारित करता है, लेकिन टैब का उपयोग करने सहित विरासत फ़ाइलें अलग-अलग हो सकती हैं।

हमारी कुछ विरासत पाइथन फाइलें वास्तव में प्रति व्यक्ति दो रिक्त स्थान का उपयोग करती हैं। तो मैं विम को इंडेंटिंग करने के लिए पाइथन छोड़ देता हूं और प्रति फ़ाइल और प्रति फ़ाइल टाइप को कॉन्फ़िगर करता हूं। .vimrc में निम्न पंक्ति मुझे पाइथन-विशिष्ट सेटिंग्स देता है जो मेरे xml, xhtml, और html (दो रिक्त स्थान) कहने से भिन्न होती है।

au FileType python setl shiftwidth=4 tabstop=4 

तुम भी एक modeline जो उपयोगी है अगर आप विरासत फ़ाइलों की क्या ज़रूरत है के साथ फ़ाइल द्वारा विशिष्ट सेटिंग सेट कर सकते हैं।

# vi: set tabstop=2 expandtab textwidth=70 filetype=python: 
संबंधित मुद्दे