Pourquoi Vim ne source-t-il pas mon fichier .vimrc


9

Aujourd'hui, j'ai trouvé que mon .vimrcne prenait pas effet. C'était ok il y a quelques heures à peine.

Lorsque j'ai lancé vim avec $vim --plugin, je n'ai :scriptnamesfait aucun écho: le .vimrcfichier n'était pas d'origine. (Remarque: a /etc/vimrcété supprimé pour déboguer ce problème.)

Ensuite, j'ai essayé de google et j'ai trouvé une $VIMINITvariable suspecte.

Voici la valeur de $VIMINIT:

$ echo $VIMINIT
set number

Documentation Vim sur 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 (*)!

Je ne pouvais pas comprendre complètement la documentation de vim. Il semble que cela $VIMINITpuisse gâcher le démarrage de vim.

Clair $VIMINIT:

$ VIMINIT=
$ echo $VIMINIT

Le problème existe toujours.


2
"Le premier qui existe est utilisé, les autres sont ignorés." $VIMINITa un précédent sur tout .vimrcfichier. Et il satisfait à la règle du premier arrivé, premier servi. Donc oui .vimrcest ignoré.
Sukima

Réponses:


10

Développer la réponse de @ mMontu; Vim recherche l'initialisation dans l'ordre de cette liste jusqu'à ce qu'il en trouve une. Étant donné que la $VIMINITvariable a priorité sur le .vimrcfichier, elle satisfait la recherche et toute autre option après cela est ignorée .

La raison pour laquelle cela n'a toujours pas fonctionné après:

$ VIMINIT=
$ echo $VIMINIT

Si (1) vous définissez une variable locale et non une variable d'environnement. Cela doit être exporté:

$ export VIMINIT=

(2) cela ne fonctionnera toujours pas car VIMINITest toujours défini:

$ printenv | grep VIMINIT
VIMINIT=

Ce qui doit arriver, c'est le retrait de l'environnement tous ensemble:

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

(Ces commandes sont spécifiques à Bash. Modifiez-les en fonction de votre shell préféré si nécessaire.)


Mais cela ne fonctionne que pour une session, que diriez-vous de le désactiver définitivement? ou peut-être en recherchant où est la variable définie, afin que vous puissiez aller la supprimer?
Feng Yu

8

Vous avez probablement mal compris la documentation:

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

Ainsi, si vous utilisez le VIMINIT, le vimrc ne sera pas chargé.

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

Vous définissez $ VIMINIT sur une commande Ex set number, ce qui est correct selon les documents. Mais si vous préférez un vimrc, vous devez l'inclure set numberdans ce fichier au lieu d'utiliser $ VIMINIT. Vous avez mentionné que vous définissez à vider et votre vimrc était toujours pas chargé, mais vous devez réellement désinitialiser la variable.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.