Neden vim .vimrc dosyamı kaynak vermiyor?


9

Bugün, .vimrcetkili olamadığımı buldum . Sadece birkaç saat önce iyiydi.

Birlikte vim başlattığında $vim --plugin, :scriptnamesyankılandı şey: .vimrcDosya kaynaklı değildi. (Not: /etc/vimrcbu sorunu gidermek için kaldırıldı.)

Sonra google denedim ve $VIMINITdeğişken şüpheli buldum .

İşte değeri $VIMINIT:

$ echo $VIMINIT
set number

Vim ile ilgili belgeler 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 belgelerini tam olarak anlayamadım. $VIMINITVim'in başlangıcını bozabilecek gibi görünüyor .

Açık $VIMINIT:

$ VIMINIT=
$ echo $VIMINIT

Sorun hala var.


2
"İlk olan kullanılır, diğerleri yok sayılır." $VIMINITherhangi bir .vimrcdosyada emsal teşkil eder . Ve ilk gelen ilk servis kuralını karşılar. Yani evet .vimrcgöz ardı edilir.
Sukima

Yanıtlar:


10

@ MMontu'nun cevabına genişleyen; Vim, bu listeyi buluncaya kadar başlatmaya çalışır. Yana $VIMINITdeğişken almak emsal .vimrcdosyada, bu tatmin arama ve bundan sonra da başka bir seçenek olduğu göz ardı .

Hala çalışmamasının nedeni:

$ VIMINIT=
$ echo $VIMINIT

(1) bir ortam değişkeni değil yerel bir değişken mi ayarlıyorsunuz? Dışa aktarılması gerekiyor:

$ export VIMINIT=

(2) bu hala çalışmaz, çünkü VIMINIThala tanımlanmıştır:

$ printenv | grep VIMINIT
VIMINIT=

Gerçekleşmesi gereken şey hep birlikte çevreden uzaklaştırmak:

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

(Bu komutlar Bash'a özgüdür. Gerekirse bunları tercih ettiğiniz kabuğa uyacak şekilde değiştirin.)


Ama bu sadece bir oturum için işe yarıyor, ya kesinlikle ayarlamayı kaldırmak? veya değişkenin nerede ayarlandığını araştırabilir, böylece gidip silebilirsiniz?
Feng Yu

8

Muhtemelen belgeleri yanlış anladınız:

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

Böylece VIMINIT kullanıyorsanız, vimrc yüklenmez.

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

$ VIMINIT ayarını bir Ex komutuna ayarlıyorsunuz set number. Ancak bir vimrc'yi tercih ediyorsanız, $ VIMINIT kullanmak yerineset number bu dosyaya eklemelisiniz. Sen boş olarak ayarlayın ve vimrc hala yüklendi, ama aslında gerektiğini belirtti unset değişken.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.