新しくインストールしたかのように、すべてのユーザー設定をVimに無視させるにはどうすればよいですか?


21

動作が個人設定の影響を受けないようにするため、ユーザーがインストールしたすべての設定ファイルを無視する方法でVimを起動します。すぐに。

これはFAQで対処されており、次のコマンドでVimを起動することが答えであることが示唆されています。

vim -u NONE -U NONE -N -i NONE

これによりほとんどの方法で取得runtimepathできますが、オプションには~/.vim、特にが含まれています~/.vim/after(たとえば、その後ファイルタイプの検出をオンにしてファイルタイプを変更~/.vim/after/syntax/the_relevant_filetype.vimすると、コードが実行されます)。

起動時に次のコマンドを呼び出すことで、この特定の問題を回避できます*:

:set runtimepath-=~/.vim
:set runtimepath-=~/.vim/after

...しかし、私はわからない:

  1. これは堅牢なソリューションです。ユーザー設定を有効にできる唯一のパスはこれらですか?他に考えていないことはありますか?
  2. 望ましい結果を達成するためのより良い方法があります。

* --cmdまたは-u vimrcシェル引数を使用するか、単にそれらを手動で入力します。

編集:これは私が修正しようとしている問題の種類の特定の例です。(私は解決策が他の考えられる問題を修正したいのですが、まだ気付いていないかもしれません。):

  1. コンテンツを含むファイル〜/ .vim / after / ftplugin / c.vimを作成します。

    noremap i :echom "This is not default behaviour"<CR>
    

    これで、ユーザーがインストールした構成のうち、無視したいものがあります。FAQで提案されたソリューションをテストしましょう。

  2. 次のコマンドでVimを実行します:

    vim -u NONE -U NONE -N -i NONE
    
  3. 次のコマンドを入力します。

    :filetype plugin on
    :set ft=c
    i
    

望ましい動作:Vimは挿入モードに入る必要があります。これは、ユーザー構成が存在しない場合の処理​​です。

観察された動作:Vimは「これはデフォルトの動作ではありません」と出力します


Unixライクなシステムでは、次のようにするとどうなりますHOME=/dev/null vim -u NONEか?
ムル

@muru素敵なアイデアで、おそらく答えとして追加する価値がありますが、完璧ではありません。たとえばの機能は明らかに失われますが:cd ~viminfoファイルのデフォルトの場所は$ HOMEであるため、E138が発生する可能性があります。新しい空のディレクトリを作成し、それを$ HOMEに使用するのが最善の解決策になると思います。
リッチ

@muru $ HOMEを設定している場合、おそらくあなたも指定する必要はないだろうと思いました-u NONE
リッチ

1
どちらの場合の/tmpほうが良いか、それは私の最初の考えでしたが、それから/ dev / nullをブラックホールとして選択しました。...または何かHOME=$(mktemp -d) vim ...
ムル

使用しない場合、システムvimrcを読み取りません-u NONEか?必要な動作に依存すると思います。
ムル

回答:


16

Vim 8.0.1554(残念ながらまだNeovimではありません)では、を使用できますvim --clean。この方法はによって推奨されてい:help bugsます。

:help --clean docs:

「-u DEFAULTS -U NONE -i NONE」と同様:
-ファイルおよび環境変数からの初期化はスキップされます
- 「runtimepath」および「packpath」はホームディレクトリエントリを除外するように設定されます(-u DEFAULTSでは発生しません)。
-| defaults.vim | スクリプトはロードされ、「nocompatible」を意味します:Vimのデフォルトを使用-no
| gvimrc | スクリプトがロードされてい
ます-viminfoファイルは読み書きされていません


1
いいね!これは、$HOME変数をいじるよりもずっと簡単です。Goodjob Vim開発者。そして、答えてくれてありがとう!
リッチ

1
--cleanneovimマスター上でも動作します(github.com/neovim/neovim/commit/…、0.4.0に含まれます)が、ホームディレクトリを除外しません。
クリスチャンクラソン

(まだ、そのパッチは移植されるのを待っています)
クリスチャン・クラソン

11

ユーザー固有のファイルを削除する1つの方法は、異なる値を使用することです$HOME。読み取りまたは書き込み(viminfoなど)を許可しない場合は、次を使用できます/dev/null

HOME=/dev/null vim -u NONE

これによりについてのエラーが発生するviminfoため、代わりに一時フォルダーを作成するか、既存のフォルダーを使用できます(など/tmp)。

HOME=$(mktemp -d) vim -u NONE

こうしたAで$HOME-u NONE管理者がシステム全体に追加した内容に応じて、必要とされなくてもよいですvimrc。例えば、私が管理するすべてのラボシステムでは、私が追加/etc/vim/vimrc.local(パッケージVimのデフォルトによって供給/etc/vim/vimrc)があることnocompatiblesyntaxなど、セット、およびfiletype on同様。


3
vim-i NONE viminfoの読み込みを防ぐため
クリスチャンブラバンド

1

私はその多くに答えることはできませんが、言及されていない1つのポイント、そしてタイトルにあるものの解釈に再び答えます

新しくインストールしたかのように、すべてのユーザー設定をVimに無視させるにはどうすればよいですか?

いくつかが提案したvim -u NONEvim -u NORC

これは、いくつかの点で、単なるvimrcファイルよりもやや骨が折れています。「i」と入力しても、「挿入」とは表示されません。まだ「挿入」と言うことができます。vimrcファイルを空白にしてvimを起動した場合、挿入が表示されます。

これは、vimが最初にデフォルトの設定を読み込むためです。

vimrcファイルを空白にする効果を得るために、vimにそのデフォルトファイルを指定できます。を持っていることを確認し、あなたが/etc/vim/vimrcできるvim -u /etc/vim/vimrc か、osxで、デフォルトのファイルは/usr/share/vim/vicmrc


それがまさに、vim --cleanがあなたのためにすることだと思います。
ケメライスク

@quemeraisc vim --cleanがロードされますdefaults.vim。この答えは、システムのvimrc(参照してくださいを参照している:help system-vimrc私がいると思います。)、ないでロードされましたvim --clean
リッチ

@barlap:defaults.vim(「参考文献」を参照:help defaults.vim)との混乱を避けるためdefault configsystem vimrc、この回答の表現をに変更した方がよい場合があります。またはさらに良いことに、答えの中で両方について議論してください!
リッチ

0

以下からのVim-FAQ 2.5

2.5。Vimに「xyz」(一部)の問題があります。セットアップまたはVimに問題があると判断するにはどうすればよいですか?/ Vimにバグを見つけましたか?

最初に、エラーが実際のランタイムファイルまたはVimとともに配布されたプラグインにあるのか、それが.vimrcまたは.gvimrcの設定オプションの単純な副作用であるのかを調べる必要があります。最初に、次のようにvimを起動します。

vim -u NONE -U NONE -N -i NONE

これにより、viminfoファイルを読み取らずに(-i NONE)、構成ファイルを読み取らずに(.vimrcファイルを読み取らない場合は-u NONE、.gvimrcファイルを読み取らない場合は-U NONE)、Vimを非互換モード(-N)で開始します。プラグインですら。


1
FAQに載っていますが、質問で言及されている理由により、これは実際には機能しません。
リッチ

@Rich質問に対するあなたのコメントから:ensure that none of the behaviour I'm seeing is caused by user config-そして、あなたはこのFAQで説明されていることを正確にやろうとしているように見えます。私はあなたの質問を読み直しましたが、あなたが言った理由はまだわかりません。
mMontu

よくある質問で説明されていることを正確に実行しようとしています。しかし、それが提供するソリューションは、runtimepath設定のために機能しません。
リッチ

正確に何が間違っていruntimepathますか?で説明されているように、このオプションのデフォルトのようです:help rtp。この値はテストにどのように影響しますか?
mMontu

@Richつまり、ファイルタイプの検出をオンにした後、新規インストールと比較したときに違いはありますか?
mMontu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.