Сегодня я обнаружил, что мой .vimrc
не вступил в силу. Это было хорошо всего несколько часов назад.
Когда я запустил vim с $vim --plugin
, :scriptnames
ничего не повторилось: .vimrc
файл не был получен. (Примечание: /etc/vimrc
был удален для устранения этой проблемы.)
Затем я попытался Google и нашел $VIMINIT
переменную подозрительным.
Вот значение $VIMINIT
:
$ echo $VIMINIT
set number
Vim документация о 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
может испортить запуск vim.
Очистить $VIMINIT
:
$ VIMINIT=
$ echo $VIMINIT
Проблема все еще существует.
vimrc
invocation
Фэн Ю
источник
источник
$VIMINIT
имеет прецедент над любым.vimrc
файлом. И это удовлетворяет правилу «первым пришел - первым обслужен». Так что да.vimrc
игнорируется.Ответы:
Расширение на ответ @ mMontu; Vim ищет инициализацию в порядке того списка, пока не найдет его. Поскольку
$VIMINIT
переменная имеет прецедент для.vimrc
файла, она удовлетворяет поиску и любой другой опции, после чего она игнорируется .Причина, по которой это все еще не работает после:
Если (1) вы устанавливаете локальную переменную, а не переменную окружения. Это должно быть экспортировано:
(2) это все еще не будет работать, потому что
VIMINIT
все еще определено:Что должно произойти, это удаление из окружающей среды все вместе:
(Эти команды относятся к Bash. Измените их, чтобы они соответствовали вашей предпочтительной оболочке, если необходимо.)
источник
Вы, вероятно, неправильно поняли документацию:
Таким образом, если вы используете VIMINIT, vimrc не будет загружен.
Вы устанавливаете $ VIMINIT для команды Ex
set number
, которая в порядке в соответствии с документацией. Но если вы предпочитаете vimrc, вы должны включитьset number
в этот файл вместо использования $ VIMINIT. Вы упомянули, что вы установили его пустым, и ваш vimrc все еще не был загружен, но на самом деле вы должны сбросить переменную.источник