目次
- はじめに (vim_lib)
- 致命的な欠陥のないプラグインマネージャー (vim_lib、vim_plugmanager)
- プロジェクトレベルとファイルシステム (vim_prj、nerdtree)
- スニペットとファイルテンプレート (UltiSnips、vim_template)
- コンパイルと実行 (vim-quickrun)
- Gitを使用する (vim_git)
- デプロイ (vim_deploy)
- xUnitを使用したテスト (vim_unittest)
- すべてが置かれているライブラリ (vim_lib)
- その他の便利なプラグイン
プロジェクトは、Vimエディターに本当に欠けているものです。 プロジェクトの実装により、FS内の他のフォルダーやファイルとは別のエンティティとして区別するだけでなく、次のようなホイッスルを実装することもできます。
- プロジェクトの最後のセッションを自動的に保存および復元して、再度開いた後、同じ設定と位置でファイルを最後に編集できるようにします
- プロジェクトの作成者、ライセンス、バージョンなどのプロジェクト情報を保存します。 このデータはすべて、テンプレートとスニペットに追加できます。
- プロジェクトのルートディレクトリは厳密に定義されています。 これにより、xUnit、デバッガ、ドキュメントジェネレータなどの他のツールの使用が簡単になります。
- ユーザーバージョンと同様に、プロジェクトと.vimrcファイルのみに属する別の.vimディレクトリ。 これでプロジェクト設定とプラグインが保存されます
Vimのプロジェクト
理由はわかりませんが、Vimユーザーはプロジェクトモデルを使用しないか、本質的に必要なプロジェクト機能の一部のみを提供するかなり奇妙なプラグインを実装/使用します。 Vimにはプロジェクトの新しいレベルを実装するための既製のメカニズムがあります。これはexrcオプションで、起動時にルートディレクトリで.vimrcファイルを検索して起動しますが、明らかにこれでは不十分です。 このソリューションには何が欠けていますか? まず、プロジェクトに1つの厚い.vimrcファイルを取得します。これは、時間の経過とともに変更することがますます困難になっています。 第二に、ハイライト、スニペット、テンプレート、プラグインなど、プロジェクトのVim構成を再定義することがより難しくなります。 理想的には、プロジェクトには.vimrcファイルと独自の.vimディレクトリ( .ideaに類似)の両方が必要です。 このディレクトリは、その仲間のユーザーレベルの機能を繰り返す必要があります。これは、同じサブディレクトリと同じロードロジックを使用することを意味します(可能な場合、Vim自体を使用して、すべてが透過的で柔軟です)。
1つの小さなプラグイン
.vimディレクトリの接続と使用は、使い慣れたvim_libライブラリによって実装されます。 sys / Autoloadクラスは、プロジェクトの.vimディレクトリをruntimepathに接続して、正しい順序(最後)でロードし、Vim設定をオーバーライドできるようにします。 残りのロジックは、 vim_prjプラグインによって実装されます。 彼のタスクは次のとおりです。
- exrcオプションを使用して.vimrcファイルを接続します
- プロジェクトの最後のセッションを保存および復元する
- コマンドでプロジェクトインフラストラクチャを作成する
- 著者、ライセンスなどのプロジェクトオプションを保存します。
- プロジェクトの場所に関する情報をFSおよびすべての読み込みレベルに保存する
プロジェクト.vimrc
誰も知らない場合、exrcオプションを使用すると、Vimは.vimrcまたは_vimrcという名前のファイルを現在のディレクトリ(エディターが実行されているディレクトリ)で検索して実行します。 vim_prjプラグインは、このオプションをオンに設定するだけです。
プロジェクトセッション
ここのすべてはそれほど複雑ではありません。 Vimは、セッション情報とmksessionコマンドを保存するファイルを使用して、 すぐにセッションを保存および復元できます。 sessionoptionsオプションを使用すると、保存するデータと「忘れる」データを決定できます 。
プラグインはプロジェクト(ルートディレクトリに.vimが含まれる)のみに応答し、プロジェクトを開いたり閉じたりするときに最後のセッションを自動的に保存および復元します。 プロジェクトセッションは.vim / session.vimファイルに保存されます。
プロジェクトのインフラ
プラグインがプロジェクトとして何らかのディレクトリで動作するようにするには、その中に.vimディレクトリを作成するだけです。 すべての怠programmerなプログラマーは声で言うでしょう-私は自分の手でそれを作成する必要がありますか? -もちろんそうではありません! このため、プラグインはVimPrjCreateコマンドを実装します。これは、 .vimに加えて、プロジェクトに.vimrcファイルを作成し、 sys / Autoloadローダーの要件に従って初期化し、 .vim / plugins.vimおよび.vim / bundleを作成します。 この構造により、 vim_plugmanagerを使用してプラグインをすばやくインストールできます(すぐに.vim / plugins.vimに接続されます )。
作成された.vimrcの例
filetype off call vim_lib#sys#Autoload#init('.vim', 'bundle') so .vim/plugins.vim " filetype indent plugin on
プロジェクト情報
プラグインによって作成されたグローバル辞書vim_prj#optは特別なものではなく、プロジェクトデータを保存する場所を定義するだけです。 ユーザーのすべてのプロジェクトの一般情報を設定できます〜/ .vimrc
例
" ~/.vimrc let g:vim_prj#opt = {'author': 'Vim_*', 'license': 'GNU GPL 3'}
.vimrcプロジェクトファイル内の特定のプロジェクトに対してそれらをオーバーライドします。
例
" ./.vimrc let g:vim_prj#opt = {'author': 'Vim_*', 'license': 'MIT'} " ,
このディクショナリはスニペットとテンプレートで積極的に使用されており、多くのファイルを掘り下げることなくプロジェクト情報をすばやく変更できます。
プロジェクトハウス
プラグインの非常に便利な機能は、実装する必要さえありませんでしたが、FS内のプロジェクトの場所を特定することです。 プロジェクトのルートディレクトリ( .vimが格納されている)でVimエディターを開くと、プロジェクトで作業しています。それ以外の場合は、エディターを開いただけです。 したがって、プラグインは、プロジェクトのルートディレクトリのアドレス、他のすべてのエディターロードレベル($ VIMRUNTIMEおよび〜/ .vim )を認識します。これらは他のプラグインが必要とする場合があります。 当然、そのようなプロジェクトで作業するには、プロジェクトのファイル構造を表示してファイルを開く機能が必要です。 これは、 nerdtreeプラグインを使用して行われます。 つまり、 vimコマンドを使用してプロジェクトのルートでエディターを開くだけで、プロジェクトに固有の魅力をすべて取得できます。
さようなら
この記事にはnerdtreeプラグインをペイントする理由はありません(既に知っていると思います)。ファイルマネージャーに必要な機能や他のプラグインが使用する便利なAPIが不足しているため、将来的に置き換えまたは書き換えられるとしか言えません。