Por que você espera que o editor sempre escolha o recuo correto? Ao configurar uma determinada configuração de recuo (como o bom e universal :set smartindent ), você obtém algo que funciona na maior parte do tempo. Para esses outros casos, você pode sempre recuar manualmente (com <Tab> , supondo que você tenha sido :set tabstop=... expandtab etc.), ou alterar o recuo após o fato com >> e << .
Se você realmente tiver uma sintaxe específica em que as regras de recuo sejam bastante simples e determinísticas (e nenhuma das configurações de recuo padrão funcione o tempo todo), será necessário escrever um indentexpr (cp. :help indent-expression ) personalizado.
Como seu exemplo é sobre formatação de texto, isso não se aplica, e você é realmente melhor com 'smartindent' e correções manuais.