Отступ Vim для шаблонов c ++?

Кто-нибудь знает или знает о плагине / макросе / функции vim, которые отлично подходят для шаблонов c ++?

Когда я выделяю определение шаблона в файле vim .hpp / .h и делаю отступ с помощью '=', я получаю что-то вроде этого:

>     template <
>         class TFilter,
>               class TParser,
>               class TConsumer,
>               class TDataProcessor,
>               class TDataFeed,
>               class TSymbolMap
>                   >
>                   struct DataFeedTraits
>                   {
>                       typedef TFilter             Filter;
>                       typedef TParser<TSymbolMap> Parser;
>                       typedef TConsumer<Parser>   Consumer;
>                       typedef TDataProcessor<Filter,Consumer>  DataProcessor;
>                       typedef TDataFeed<Filter,DataProcessor,Parser,Ccnsumer> DataFeed;
>                   };

Я думаю, что cindent выравнивает объявление struct / class с закрывающей скобкой '>'. Я хотел бы в конечном итоге что-то вроде этого, или подобное, точное форматирование не имеет значения, насколько это отформатировано:

template <
    class TFilter,
    class TParser,
    class TConsumer,
    class TDataProcessor,
    class TDataFeed,
    class TSymbolMap
    >
struct DataFeedTraits
{
    typedef TFilter             Filter;
    typedef TParser<TSymbolMap> Parser;
    typedef TConsumer<Parser>   Consumer;
    typedef TDataProcessor<Filter,Consumer> DataProcessor;
    typedef TDataFeed<Filter,DataProcessor,Parser,Ccnsumer> DataFeed;
};

Ответы на вопрос(2)

Ваш ответ на вопрос