左側と右側を分け隔てる区切りです。その区切りの色は、指定したものになります。次のg:ezbar.activeは私が使っているものです。文字色が白で太字で表示されます。あるので、ここでステータスラインの左右が分かたれ、間はハイライトグループStatusLineで埋められます。]このようにezbarはパートという部品を列挙するだけで簡単にステータスラインを作成できます。標準のパートは以下のものです。残りのパートは自分で作って用意します。(パートの用意)パートはg:ezbar.partsに登録して用意します。部品を作るに当たり、他のライン系プラグインと違って、できないことがあります。回避手段も用意されています。以下のことが出来ません。g:ezbar.partsに登録するのは全て関数です。複雑な処理をせず、ただ文字列だけのパートであっても、一度関数を作ってそれに文字列を返させるという冗長なことをする必要があります。現在の文脈のバッファ名を得るなんてことも出来ません。現在の文脈のウィンドウ番号を得ることも出来ません。参照することも出来ません。このウィンドウ番号を文脈として、必要な情報を作るようにします。現在の文脈のバッファ名はbufname(winbufnr(a:n))で得るようにします。ウィンドウ番号は与えられます。いうことをしないと文脈情報を得られなくなったので、冗長になったように思えますが、しかし逆に文脈を取得した後は、関数内でその文脈を使って複雑な処理をすることが可能になりました。この冗長さはezbarのパワフルさとトレードオフです。変数に登録してしまえば、以後はどの部品からでも登録した文脈を利用することが出来るので益の方が大きくなります。g:ezbar.parts._init()はステータスラインの評価の開始時に一番始めに実行される関数です。いうパートは特別な役割を果たします。パート関数の中で一番始めに実行されてこれから各パートで使う変数を用意したり、ステータスラインの状態を変えたりします。g:ezbar.parts._filter()は、パート関数の中で一番最後に実行されて、各パートのプロパティを書き換えたり、パートそのものをなかったことにすることができます。"_init"から"_filter"まで、各パートの中身を書くことにします。ここではs:uという変数を用意し、最後にs:uをs:ezbar.partsに統合する方針を採るので、これから出てくるs:uは、最終的にはs:ezbar.partsに統合されると考えて下さい。endendfunction前述の通りg:ezbar.parts._init()に渡される引数は評価中ステータスラインのウィンドウ番号です。現在の文脈のバッファをself.bufnameに代入します。これでこれ以降のパートではself.bufnameでバッファ名を得られるようになりました。他に、現在のモードによって表示を変更するというのを複数のパートでやりたいのでmode()の結果もself.modeに代入します。評価中のステータスラインはアクティブかどうかが代入されます。self.__default_colorは、特に色を指定していないパートはこの色になるようにします。StatusLineNCの色がデフォルトになっていますが、途中で変更することが出来ます。変更すると以降のパートでは変更した色が利用されます。}の形式で指定します。_init()で準備は整えたのでいよいよパートを作ります。バッファ番号とウィンドウ番号を表す"winbufnum"です。winnr())}%<'endfunction返り値である文字列がパートになります。次に現在ウィンドウに表示中のバッファのあるディレクトリを返す"dir"です。self.bufnameを利用しています。返り値は文字列ではなく辞書を使っています。"c"でアクティブ時の色、非アクティブ時の色、デフォルトの色を指定することが出来ます。とき、現在カーソル位置が、関数の始まりから何行目なのかを表すものです。endfunction条件に合わないときには空文字を返しています。パート関数の返り値がempty()だった場合、g:ezbar.parts._filter()が呼ばれる前に除去されて存在しなかったことになります。して文脈に応じてパート自身が自分の色を決めたり、自分が存在するかどうかを決めることが可能です。g:ezbar.parts._filter()でも色を変更したり、除去したり、出力される文字列を変更したり出来ます。気に入らない色は最終的に修正することは可能です。g:ezbar.parts._filter()での処理は若干煩雑になるので、出来るならパーツ内で処理を完結させたほうがいいでしょう。tyru/current-func-info.vimという、現在のカーソル位置が関数内にあるときに関数名を返してくれるプラグインがありますが、それを利用する部品を作ります。''endfunctionこれで自分で作るパートは"_filter"を除いて揃いました。最後に標準で用意されているパートを統合します。'keep')(最終処理)g:ezbar.parts._filter()で最終処理を行います。自分で作ったパートはすでに色を設定したり文脈に応じた処理を施しましたが、標準で用意されているパートには何の手も加えていません。そこで、最後にカスタマイズします。g:ezbar.parts._filter()に渡される引数は今までのパートのものと違います。