vimプラグインを作成するために従うべきことは?


11

だから私の質問は簡単です。vimを作成するためだけにvimスクリプトを学ぶのは良い考えですか、それとも他の受け入れられている言語を採用する必要がありますか?

たとえば、このリンクは、Pythonを使用してvimプラグインを作成する方法を示すYouTubeビデオを開きます。

いくつかのvimプラグインを作成するつもりがない限り、Vimスクリプトは完全には役に立ちません。それでは、vimスクリプトのみを使用しないと実行できない特定のことはありますか?


2
プラグインを作成したり配布したりせずに、多くの人がvimscriptを使用して(非常に徹底的に)Vimを構成していることに注意してください。
VanLaser 2015年

回答:


12

私のプラグインはVimLで99%です。その理由は、vimがインストールされている場所でVimLを使用できるためです。他の言語ではもっと複雑です-たとえば、Vimを使用するウィンドウボックスにPythonがインストールされていることはまれです。

もちろんVimLは扱いにくいですが、多くの優れた機能がありませんが、少なくともポータブルなものを持っている方が簡単です。

VimLにない1%は、Pythonバインディングを提供する外部APIと対話する必要がある場合です。

ところで、VimLについて学んだほとんどすべてのものは、のようなコマンドで遊ぶときにインタラクティブに使用できます:substitute。ほとんどのマッピングまたはマクロには、Pythonも必要ありません。


1
私は実際にそのような面倒なVimLを見つけません。もちろん、Pythonのような高水準言語のクールな機能が不足していることには同意しますが、しばらく作業した後、VimLを使用するのは非常に楽しいと思います。VimLの評判は必要以上に悪いと思います。
Karl YngveLervåg15年

上手。vim5.x(私がそれを使い始めたとき)から多くの進歩があったことを認めなければなりません。しかし、私たちが複雑なことをしなければならないコーナーケースはまだあります。たとえばmap()、文字列を期待する、または(無関係)を参照してください:map。私はしばしば、マッピングの生成や関数呼び出しのリストの処理などの目的を達成するために、文字列評価で遊んだりしなければなりません...
Luc Hermitte

別の言語でvimプラグインを作成しても、python / ruby​​ / etcへのバインディングがあるため、とにかくVimLを学ぶ必要がなくなります。かなり制限されており、どうしてもexecVimLのスニペットを取得することになります。これにより、コアロジックを、より効率的に作業できる言語で記述できますが、VimLを学ぶ必要はほとんどありません。
ホッブズ2015年

12

プラグインを書くつもりなら、間違いなくSteve Loshによるすばらしい記事「Wiming Vim Plugins」を読んでください。VimLを使用するかどうかを決定するためだけでなく、ベストプラクティスのアドバイスも提供します。

また、他の言語でのVimのスクリプト作成に関する簡単な説明も含まれています。

まず、別の言語を使用するには、プラグインのユーザーがそのバージョンのサポートでコンパイルされたVimのバージョンを使用する必要があります。この時代では、それは通常問題ではありませんが、プラグインをどこでも実行したい場合、それはオプションではありません。

別の言語を使用すると、オーバーヘッドが追加されます。Vimscriptだけでなく、Vimと言語間のインターフェースも学習する必要があります。小さなプラグインの場合、保存するよりもプロジェクトが複雑になる可能性がありますが、大きなプラグインの場合は、それだけで採算が取れます。それが価値があるかどうかを決めるのはあなた次第です。

最後に、別の言語を使用しても、Vimscriptの奇抜さから完全に隔離されるわけではありません。それでも、Vimscriptでほとんどのことを行う方法を学ぶ必要があります。別の言語を使用すると、他の言語を使用するよりも、ほとんどのことをよりきちんとまとめることができます。

私の経験では、VimL以外のプラグインの方が優れている場合でも、主に移植性のために、後で純粋なVimLの代替に切り替えることになりました。Vimは事実上すべてのシステム(醜くて古いレガシーシステムでも)で実行され、依存関係を設定したり、そのプラグインを一時的に無効にしたりするオーバーヘッドは価値がありません(特に、プラグインを無効にしていることを忘れて、そのマッピング/コマンドを使用しようとしている場合)。 。

依存関係を設定する方が簡単な場合でも、問題が発生する可能性があります(例:一部のpythonベースのプラグインは、仮想マシンの共有フォルダーから取得した場合、100%機能しません)。そのため、私が作成したいくつかのプラグインはVimLのみを使用しています。

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