Vim:特定のファイルタイプにプラグインをインストールするにはどうすればいいですか?


4

昨日出会った ジェダイ・ヴィム pythonの自動補完機能を提供するプラグイン。それを置くことによって病原体を使ってプラグインをインストールしました bundle ディレクトリとそれはうまく働いています。

今、私はこのプラグインはのためだけにあることを述べたように filetype: python だから私はでファイルを開くときだけそれをロードしたいです。 .py 私はのような他のファイルを開くときではなく、拡張子 .java, .perl, .sh

それで、どのようにこれを達成することができます。

私はvimの初心者/新人ですが、私は尋ねる前にgoogledし、これを使用して達成することができることがわかりました vim ftplugin しかし、どのファイルをどこに配置すればよいのかまったくわかりません。

vim 

jediとjedi-vimの作家として私はあなたに尋ねます:なぜあなたはこれをしたいのですか?
David Halter

私はプラグインについても同じことを尋ねようとしていました。おそらくそれはjedi-vimで大丈夫ですが、私はファイルの種類とは関係なくロードされるいくつかの本当に単純なプラグインを持っています。しかし、特定のファイルタイプ(例えばjedi-viim)に対してもっと複雑なプラグインソリューションを入手するときは、それだけをロードして単純なプラグインがめちゃくちゃにならないようにしたいと思います。私が必要なのは、ホワイトリストではなく、プラグインごとのファイルタイプのブラックリストのようなものです。
egelev

回答:


2

これを行うVimのプラグインマネージャがあります。

あなたの例では Vimプラグ

Plug 'davidhalter/jedi-vim', {'for': 'python'}

ここで文字列はgithubリポジトリの作者/名前です。 vim.orgからのすべてのスクリプトは、次の方法でgithubにもホストされています。 vim-scripts.org ユーザーの下 vimスクリプト


1

条件付きでロードしたいときに同じ問題がありました jedi-vim そしてプラグインマネージャを使う Vundle。さて、ちょっとした調査の結果、私はそれを見つけました。 Vundle 実行時にすべてのパッケージ/プラグインをロードしますが、それについてできることはあまりありませんでした。

しかしながら、 jedi-vim 自動的にロードされるかどうかの可能性があります。だから私は持っていることにしました jedi-vim 私の中でオプションがゼロに設定されている(自動的にロードされない) ~/.vimrc 私の上で1に設定 ~/.vim/ftplugin/python.vim ファイル。

このオプションは以下のとおりです。

" supposing this is the .vim/ftplugin/python.vim file let g:jedi#auto_initialization = 1


0

特に複雑なプラグインの場合は、他のファイルタイプへの影響を最小限に抑えるようにプラグインを記述する必要があります。プラグインのアプリケーションをPythonファイルに限定したい理由を述べませんでした(他のマッピングを妨害するグローバルマッピングをインストールしない限り、通常は気にしません)。 遅い読み込み時間に関する問題 、それだと思います。

プラグインの作成者が修正を提供するまでは、 plugin/jedi.vim ファイル(および対応する jedi_vim.py )1つ上のディレクトリに移動するので、Vimが起動したときに自動的に読み込まれません。あなたがプラグインを使用したいときは、経由でそれをロードしてください :runtime jedi.vim。たぶんあなたはファイルを ftplugin/ フォルダ; Pythonファイルが編集されると、それらは自動的に読み込まれます。やってみよう。

代わりに、あなたは完全に分離することができます .vim Pythonやその他の開発用のディレクトリ。2つの異なるエイリアスを使って起動します。 vim-with-python 対単純なvim:

alias vim-with-python='vim --cmd "set rtp^=~/.vim-with-python" --cmd "set rtp+=~/.vim-with-python/after"'

一つ上のディレクトリとは、そこから移動するという意味です。 bundle/jedi-vim/pluginbundle/jedi-vim b'cozこれはうまくいきませんでした。それは言っていくつかのエラーを示した undefined variable ...

はい、実際には、外部のディレクトリ plugin/ 起動時に供給されるのはそれらだけなので、問題ありません。しかし私が言ったように、複雑なプラグインが多くのファイルにまたがっている場合、これはそれほど簡単ではないかもしれません。依存構造と呼び出しシーケンスをリバースエンジニアリングする必要があります。
Ingo Karkat

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