なぜ.vimrcファイルをvimソース化しないのですか?


9

今日、私は私の.vimrc効果が出ていないことを発見しました。ほんの数時間前に大丈夫だった。

でvimを起動したとき$vim --plugin:scriptnames何もエコーされませんでした。.vimrcファイルが読み込まれていません。(注:/etc/vimrcこの問題をデバッグするために削除されました。)

それから私はグーグルを試みて、$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のドキュメントを完全に理解できませんでした。$VIMINITvimの起動を台無しにするかもしれないようです。

クリア$VIMINIT

$ VIMINIT=
$ echo $VIMINIT

問題はまだ存在しています。


2
「存在する最初のものが使用され、その他は無視されます。」$VIMINITどの.vimrcファイルよりも先例があります。そして、それは先着順のルールを満たします。したがって、はい.vimrcは無視されます。
スキマ

回答:


10

@mMontuの答えを拡張します。Vimは、リストが見つかるまで、そのリストの順に初期化を探します。以来$VIMINIT、可変テイク先例.vimrcファイル、それを満たし検索され、その後、他のオプションは無視

それでも動作しない理由:

$ VIMINIT=
$ echo $VIMINIT

(1)環境変数ではなくローカル変数を設定しています。それをエクスポートする必要があります:

$ export VIMINIT=

(2)VIMINITがまだ定義されているため、これはまだ機能しません。

$ printenv | grep VIMINIT
VIMINIT=

発生する必要があるのは、環境からの削除です。

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

(これらのコマンドはBash固有です。必要に応じて、使用するシェルに合わせて変更してください。)


しかし、これはセッションでのみ機能します。それを確実に解除するのはどうですか?または、変数セットがどこにあるかを検索して、それを削除できますか?
Feng Yu

8

あなたはおそらくドキュメントを誤解しました:

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

したがって、VIMINITを使用している場合、vimrcはロードされません。

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

$ VIMINITをExコマンドに設定していますがset number、ドキュメントによればOKです。ただし、vimrcを使用する場合は、$ VIMINITを使用set numberする代わりに、そのファイルインクルードする必要があります。空に設定したがvimrcはまだロードされていなかったと述べましたが、実際には変数の設定を解除する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.