2

私が取り組んでいる 2 つの異なるプロジェクト (projA と projB と呼びましょう) には、独自の Vim プラグインがあります。

各プラグイン フォルダーには、ftdetect、ftplugin、plugin、および syntax サブフォルダーがあり、それぞれが同じ種類のファイル (.cpp、.html など) を処理します。

プラグインの両方のセットをロードすると、何も正しく動作しないため、作業中のプロジェクトに対応するプラグインのみをロードする方法が必要です。

私の考えは、現在の作業ディレクトリが経由しているものを検出しgetcwd()、関連するプラグインのみをロードすることですが、単一のプラグインを手動でロードする方法がわかりません。

現在、Vundle を使用して残りのプラグインを管理しています。

4

2 に答える 2

5

Vundle や Pathogen などのパッケージ マネージャーは、各プラグインを独自のサブツリーに分割し、それらすべてのパスを'runtimepath'オプションに連結して、Vim がそれらすべてを考慮するようにします。これにより、プラグインを無効にすることが特に簡単になります。プラグインのサブツリーが に含まれないようにするだけ'runtimepath'です。

Vundle はコマンド~/.vimrc経由でプラグインを参照Bundle 'foo/bar'するため、条件を付けるだけで済みます。

if getcwd() ==# '/work/cpp'
    Bundle example/cpp
else
    Bundle example/other
endif

従来のアプローチ

従来の単一の構成階層では、正規の包含ガード~/.vim/を設定してプラグインのロードを抑制する必要がありました。g:loaded_PluginNameこれにはプラグインのサポートが必要であり、ほとんどの場合、ftplugins、インデント、および構文スクリプトでは機能しません。

于 2013-09-03T14:32:15.753 に答える