Hoje, descobri que o meu .vimrc
não entrou em vigor. Estava tudo bem há algumas horas atrás.
Quando iniciei o vim $vim --plugin
, :scriptnames
não ecoou nada: o .vimrc
arquivo não foi originado. (Nota: /etc/vimrc
foi removido para depurar esse problema.)
Então tentei pesquisar no Google e achei a $VIMINIT
variável suspeita.
Aqui está o valor de $VIMINIT
:
$ echo $VIMINIT
set number
Documentação do Vim sobre 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 (*)!
Eu não conseguia entender completamente a documentação do vim. Parece que isso $VIMINIT
pode atrapalhar a inicialização do vim.
Limpar $VIMINIT
:
$ VIMINIT=
$ echo $VIMINIT
Problema ainda existe.
vimrc
invocation
Feng Yu
fonte
fonte
$VIMINIT
tem precedente sobre qualquer.vimrc
arquivo. E satisfaz a regra de quem chega primeiro a ser servido. Então, sim.vimrc
é ignorado.Respostas:
Expandindo a resposta do @ mMontu; O Vim busca a inicialização na ordem dessa lista até encontrar uma. Como a
$VIMINIT
variável é precedente para o.vimrc
arquivo, ela satisfaz a pesquisa e qualquer outra opção depois disso é ignorada .O motivo pelo qual ainda não funcionou depois:
É (1) que você está configurando uma variável local e não uma variável de ambiente. Isso precisa ser exportado:
(2) isso ainda não funcionará porque
VIMINIT
ainda está definido:O que precisa acontecer é a remoção do ambiente todos juntos:
(Esses comandos são específicos do Bash. Altere-os para se adequarem ao seu shell preferido, se necessário.)
fonte
Você provavelmente não entendeu a documentação:
Portanto, se você estiver usando o VIMINIT, o vimrc não será carregado.
Você está configurando $ VIMINIT como um comando Ex
set number
, o que é bom de acordo com os documentos. Mas se preferir um vimrc, você deve incluirset number
nesse arquivo em vez de usar $ VIMINIT. Você mencionou que o definiu como vazio e seu vimrc ainda não estava carregado, mas na verdade você deve desmarcar a variável.fonte