Heute habe ich festgestellt, dass meine .vimrc
nicht wirksam wurde. Es war vor wenigen Stunden in Ordnung.
Als ich vim mit startete $vim --plugin
, gab es :scriptnames
nichts wieder: Die .vimrc
Datei wurde nicht bezogen. (Hinweis: /etc/vimrc
wurde entfernt, um dieses Problem zu beheben.)
Dann habe ich versucht zu googeln und fand die $VIMINIT
Variable verdächtig.
Hier ist der Wert von $VIMINIT
:
$ echo $VIMINIT
set number
Vim-Dokumentation über 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 (*)!
Ich konnte die vim-Dokumentation nicht vollständig verstehen. Es scheint, dass dies $VIMINIT
den Start von vim durcheinander bringen kann.
Klar $VIMINIT
:
$ VIMINIT=
$ echo $VIMINIT
Problem besteht immer noch.
vimrc
invocation
Feng Yu
quelle
quelle
$VIMINIT
hat Vorrang vor jeder.vimrc
Datei. Und es erfüllt die Regel "Wer zuerst kommt, mahlt zuerst". Also ja.vimrc
wird ignoriert.Antworten:
Erweiterung der Antwort von @ mMontu; Vim sucht nach der Initialisierung in der Reihenfolge dieser Liste, bis eine gefunden wird. Da die
$VIMINIT
Variable Vorrang vor der.vimrc
Datei hat, erfüllt sie die Suche und jede andere Option danach wird ignoriert .Der Grund, warum es danach immer noch nicht funktionierte:
Ist (1) Sie setzen eine lokale Variable keine Umgebungsvariable. Das muss exportiert werden:
(2) Dies funktioniert immer noch nicht, da
VIMINIT
immer noch definiert ist:Was passieren muss, ist die gemeinsame Entfernung aus der Umwelt:
(Diese Befehle sind Bash-spezifisch. Ändern Sie sie bei Bedarf entsprechend Ihrer bevorzugten Shell.)
quelle
Sie haben die Dokumentation wahrscheinlich falsch verstanden:
Wenn Sie also VIMINIT verwenden, wird der vimrc nicht geladen.
Sie setzen $ VIMINIT auf einen Ex-Befehl
set number
, der laut Dokumentation in Ordnung ist. Wenn Sie jedoch ein vimrc bevorzugen, sollten Sie esset number
in diese Datei aufnehmen, anstatt $ VIMINIT zu verwenden. Sie haben erwähnt , dass Sie es auf leeren und Ihre vimrc wurde noch nicht geladen, aber man sollte eigentlich unset die Variable.quelle