क्यों स्रोत मेरे .vimrc फ़ाइल नहीं होगा


9

आज, मैंने पाया कि मेरा .vimrcप्रभाव नहीं था। कुछ घंटे पहले ही यह ठीक था।

जब मैंने vim के साथ लॉन्च किया $vim --plugin, तो :scriptnamesकुछ भी नहीं गूँज रहा था : .vimrcफ़ाइल खट्टी नहीं थी। (नोट: /etc/vimrcइस समस्या को दूर करने के लिए हटा दिया गया था।)

फिर मैंने गूगल पर कोशिश की और $VIMINITवेरिएबल को संदिग्ध पाया ।

यहाँ मूल्य है $VIMINIT:

$ echo $VIMINIT
set number

के बारे में प्रलेखन VIMINIT:

 c. Four places are searched for initializations.  The first that exists
    is used, the others are ignored.  The $MYVIMRC environment variable is
    set to the file that was first found, unless $MYVIMRC was already set.
    -  The environment variable VIMINIT (see also |compatible-default|) (*)
       The value of $VIMINIT is used as an Ex command line.
    -  The user vimrc file(s):
                "$HOME/.vimrc"      (for Unix and OS/2) (*)
                "s:.vimrc"          (for Amiga) (*)
                "home:.vimrc"       (for Amiga) (*)
                "$VIM/.vimrc"       (for OS/2 and Amiga) (*)
                "$HOME/_vimrc"      (for MS-DOS and Win32) (*)
                "$VIM/_vimrc"       (for MS-DOS and Win32) (*)
            Note: For Unix, OS/2 and Amiga, when ".vimrc" does not exist,
            "_vimrc" is also tried, in case an MS-DOS compatible file
            system is used.  For MS-DOS and Win32 ".vimrc" is checked
            after "_vimrc", in case long file names are used.
            Note: For MS-DOS and Win32, "$HOME" is checked first.  If no
            "_vimrc" or ".vimrc" is found there, "$VIM" is tried.
            See |$VIM| for when $VIM is not set.
    -  The environment variable EXINIT.
       The value of $EXINIT is used as an Ex command line.
    -  The user exrc file(s).  Same as for the user vimrc file, but with
       "vimrc" replaced by "exrc".  But only one of ".exrc" and "_exrc" is
       used, depending on the system.  And without the (*)!

मैं vim प्रलेखन को पूरी तरह से समझ नहीं पाया। ऐसा लगता है कि $VIMINITविम के स्टार्टअप को गड़बड़ कर सकता है।

साफ़ करें $VIMINIT:

$ VIMINIT=
$ echo $VIMINIT

समस्या अभी भी मौजूद है।


2
"जो पहले मौजूद है उसका उपयोग किया जाता है, दूसरों को अनदेखा किया जाता है।" $VIMINITकिसी भी .vimrcफ़ाइल पर मिसाल है । और यह पहले आओ पहले पाओ नियम पर खरा उतरता है। तो हां .vimrcनजरअंदाज कर दिया।
सुकिमा

जवाबों:


10

@ MMontu के उत्तर पर विस्तार; विम उस सूची के क्रम में आरंभीकरण के लिए शिकार करता है जब तक कि वह एक नहीं पाता। चूँकि $VIMINITचर .vimrcफ़ाइल में मिसाल कायम करता है, यह खोज और किसी भी अन्य विकल्प को नजरअंदाज करने के बाद संतुष्ट करता है

कारण यह अभी भी काम नहीं किया:

$ VIMINIT=
$ echo $VIMINIT

क्या (1) आप एक स्थानीय चर सेट कर रहे हैं, पर्यावरण चर नहीं। जिसे निर्यात करने की आवश्यकता है:

$ export VIMINIT=

(2) यह अभी भी काम नहीं करेगा क्योंकि VIMINITअभी भी परिभाषित है:

$ printenv | grep VIMINIT
VIMINIT=

क्या होने की जरूरत है पर्यावरण से सभी को एक साथ हटा रहा है:

$ unset VIMINIT
$ printenv | grep VIMINIT || echo "Gone"
Gone

(ये आदेश बैश विशिष्ट हैं। यदि आवश्यक हो तो अपने पसंदीदा शेल के अनुरूप उन्हें बदलें।)


लेकिन यह केवल एक सत्र के लिए काम करता है, निश्चित रूप से इसे परेशान करने के बारे में क्या? या शायद चर सेट कहां है, इसलिए खोजकर आप इसे हटा सकते हैं?
फेंग यु

8

आपने शायद दस्तावेज़ को गलत समझा:

 c. Four places are searched for initializations.  The first that exists
    is used, the others are ignored.

इस प्रकार यदि आप VIMINIT का उपयोग कर रहे हैं, तो vimrc लोड नहीं होगा।

-  The environment variable VIMINIT (see also |compatible-default|) (*)
   The value of $VIMINIT is used as an Ex command line.

आप $ VIMINIT को एक पूर्व कमांड पर सेट कर रहे हैं set number, जो डॉक्स के अनुसार ठीक है। लेकिन अगर आप vimrc पसंद करते हैं, तो आपको $ VIMINIT का उपयोग करने के बजायset number उस फ़ाइल को शामिल करना चाहिए । आपने उल्लेख किया है कि आपने इसे खाली करने के लिए सेट किया है और आपका vimrc अभी भी लोड नहीं हुआ है, लेकिन आपको वास्तव में वैरिएबल को अनसेट करना चाहिए ।

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