Dzisiaj stwierdziłem, że mój .vimrc
nie zadziałał. Kilka godzin temu było ok.
Kiedy uruchomiłem vima z $vim --plugin
, :scriptnames
nic nie powtórzyło: .vimrc
plik nie został pobrany. (Uwaga: /etc/vimrc
został usunięty w celu debugowania tego problemu).
Potem spróbowałem google i okazało się, że $VIMINIT
zmienna jest podejrzana.
Oto wartość $VIMINIT
:
$ echo $VIMINIT
set number
Dokumentacja Vima na temat 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 (*)!
Nie mogłem w pełni zrozumieć dokumentacji vim. Wygląda na to, że $VIMINIT
może to zepsuć uruchomienie vima.
Wyczyść $VIMINIT
:
$ VIMINIT=
$ echo $VIMINIT
Problem nadal istnieje.
vimrc
invocation
Feng Yu
źródło
źródło
$VIMINIT
ma precedens nad dowolnym.vimrc
plikiem. I spełnia zasadę kto pierwszy, ten lepszy. Więc tak.vimrc
jest ignorowane.Odpowiedzi:
Rozwijanie odpowiedzi @ mMontu; Vim szuka inicjalizacji w kolejności na tej liście, dopóki jej nie znajdzie. Ponieważ
$VIMINIT
zmienna ma pierwszeństwo przed.vimrc
plikiem, spełnia kryteria wyszukiwania, a każda inna opcja jest ignorowana .Powód, dla którego nadal nie działał po:
Czy (1) ustawiasz zmienną lokalną, a nie zmienną środowiskową. To musi zostać wyeksportowane:
(2) to nadal nie działa, ponieważ
VIMINIT
nadal jest zdefiniowane:To, co musi się zdarzyć, to całkowite usunięcie ze środowiska:
(Te polecenia są specyficzne dla Bash. W razie potrzeby zmień je, aby pasowały do preferowanej powłoki).
źródło
Prawdopodobnie źle zrozumiałeś dokumentację:
Dlatego jeśli używasz VIMINIT, vimrc nie zostanie załadowany.
Ustawiasz $ VIMINIT na polecenie Ex
set number
, co jest zgodne z dokumentacją. Ale jeśli wolisz vimrc, powinieneś dołączyćset number
do tego pliku zamiast używać $ VIMINIT. Wspomniałeś, że ustawiłeś go na pusty i twój vimrc wciąż nie został załadowany, ale tak naprawdę powinieneś rozbroić zmienną.źródło