2009-03-11 13 views
15

मैं उन सभी मशीनों के लिए एक vimrc लेता हूं जो मैं काम करता हूं और इसमें स्वाभाविक रूप से ऐसे विकल्प होते हैं जो पुराने vi में मौजूद नहीं होते हैं।। Vimrc में vi (vim नहीं) का पता कैसे लगाएं?

यदि मैं गलती से एक मशीन पर वीआई सत्र शुरू करता हूं जहां vi vim और/या vim के लिए उपनाम नहीं है, vi vimrc पढ़ता है और मुझे यह बताने के लिए परेशान त्रुटियों का एक गुच्छा फेंकता है कि इस तरह के विकल्प और ऐसे हैं असमर्थित।

मुझे पता है कि मैं हमेशा "vi" के बजाय "vim" टाइप कर सकता हूं और EDITOR चर को vim (visudo आदि ... के लिए) सेट कर सकता हूं, लेकिन क्या वहां एक रेखा है जिसे मैं vimrc के शीर्ष में जोड़ सकता हूं अगर फ़ाइल vi द्वारा पढ़ी जाती है तो स्क्रिप्ट से बाहर निकलेंगे?

उत्तर

34

तो vi वास्तव में vim के लिए एक लिंक नहीं है, यह पढ़ नहीं करना चाहिए .vimrc, यह .exrc पढ़ना चाहिए। तथ्य यह है कि यह पढ़ रहा है। Vimrc इंगित करता है कि यह वास्तव में विम का एक पुराना संस्करण है। अगर ऐसा है, तो आप नई सुविधाओं ॄेकेट करने, इस तरह vim उपयोग कर सकते हैं "अगर" का निर्माण:

:if version >= 500 
: version-5-specific-commands 
:endif 

प्रकार:

:help if 

जब अधिक जानकारी के लिए vim में।

+0

प्रकार। –

+0

@anon, धन्यवाद, यह काम करता है लेकिन जब मैं 'vi --version' करता हूं, तो यह दिखाता है कि 'वीआईएम - वीआई बेहतर 7.2 (2008 9 अगस्त, संकलित 17 फरवरी 2012 10:24:10)' तो यह सुविधाओं के साथ एक वीआईएम संकलित vi है बंद। जैसा कि मैं विवरण में आगे देख सकता हूं 'जीयूआई के बिना छोटा संस्करण' लेकिन यह क्यों काम करता है? क्या मैं कुछ भूल रहा हूँ। – garg10may

6

गैर-विम एक .vimrc नहीं पढ़ता है, यह एक .exrc की तलाश में है। आप "अगर संस्करण> = 500"

12

का उपयोग कर विम के पुराने संस्करणों का पता लगा सकते हैं यदि आप अपने चेक में अधिक विशिष्ट प्राप्त करना चाहते हैं तो आप व्यक्तिगत सुविधाओं की भी जांच कर सकते हैं।

मैं अपने .vimrc में यह है:

if has("eval") 
    " Syntax stuff 
    let java_highlight_all=1 
endif 


if has("autocmd") 
    " Buffers 
    autocmd BufEnter * cd %:p:h 
endif 
3

"vi" vimrc पढ़ा जाता है क्योंकि यह निश्चित रूप से विम नाम के साथ "vi" संकलित है। और यह संभावना संकलित है "बहुत Vi संगत होना करने के लिए" है, तो आप पता लगाने के लिए "vi" जाँच करने के लिए सुविधा 'उपयुक्त' की कोशिश कर सकते हैं: यह पता लगाने की विम का कौन सा संस्करण यह है संस्करण:

if !has("compatible") 
    let g:loaded_matchparen=1 
    syntax off 
endif 
संबंधित मुद्दे