Linux logrotateスクリプトの構文ファイルを書き込もうとしています。
多くの場合、これらには、回転アクションの前または後に実行されるスクリプトのインライン定義が含まれています。
例(cups-daemon
Ubuntu 14.04で提供されるlogrotateスクリプト):
prerotate
if [ -e /var/run/cups/cupsd.pid ]; then
invoke-rc.d --quiet cups stop > /dev/null
touch /var/run/cups/cupsd.stopped
fi
endscript
postrotate
if [ -e /var/run/cups/cupsd.stopped ]; then
rm /var/run/cups/cupsd.stopped
invoke-rc.d --quiet cups start > /dev/null
sleep 10
fi
endscript
両方に方法はありますか?
- キーワードとして強調表示
prerotate
しpostrotate
、 - リージョンとしてすべての間にハイライトしますか?
私はそれらのどちらかに対して適切な強調表示を定義するかもしれませんが、両方に対してはそうではないようです。
" this works
syntax keyword LogrotateKeyword prerotate postrotate endscript
" this also works
syntax region LogrotateScript start=/prerotate/ms=e+1 end=/endscript/me=s-1
これで、同じ構文ファイル内の両方が、使用される規則の順序に関係なく、キーワードの強調表示のみを生成します。
私が試したmatch
(と\zs
/ \ze
または先読み/ lookbehinds)の代わりにregion
、あまりにも。またmatch
、キーワードとインラインスクリプトの両方に使用してみました。定義が重複しないことを期待して、結果はまったく同じように見えます。
インラインスクリプトのデフォルトの色をそのまま使用することもありますが、インラインスタッフには他のlogrotateキーワードが含まれていることがよくあり、混乱を招く可能性があります。
ほとんどの場合、この問題には関係ありません。パッチ1-1529(pi-rho PPA)を適用したVim 7.4およびUbuntu 14.04。