Então, más notícias e boas notícias. A má notícia é que Tabular não pode realmente fazer o que você está pedindo sem um pouco de trabalho - o problema em questão requer mais contexto do que o Tabular normalmente tem acesso. A boa notícia é que o Tabular foi projetado para permitir o uso como uma ferramenta geral de manipulação de texto extremamente flexível e, nesse contexto, não é muito difícil fazer com que a Tabular faça o que você deseja.
Crie um arquivo chamado ~/.vim/after/plugin/TabularizeRecord.vim
com estes (espero que comente bastante) conteúdo:
" Create a new tabular pipeline named 'record' that includes all adjacent
" lines containing a : in its default range, and manipulates those lines by
" passing them through the TabularizeIndentedRecord function
AddTabularPipeline! record /:/ TabularizeIndentedRecord(a:lines)
function! TabularizeIndentedRecord(lines)
" A list containing each of the lines with leading spaces removed
let text = map(copy(a:lines), 'substitute(v:val, "^ *", "", "")')
" A list containing just the leading spaces for each line
let spaces = map(copy(a:lines), 'substitute(v:val, "^ *\zs.*", "", "")')
" Tabularize only the text, not the leading spaces. This pattern is more
" complicated than just /:/ to handle lines with multiple colons.
call tabular#TabularizeStrings(text, '[^:]*\zs:', 'l1')
" Tack the spaces back on to the beginning of each line, and store the
" resulting lines back in the a:lines list
call map(a:lines, 'remove(spaces, 0) . remove(text, 0)')
endfunction
Quando esse arquivo existir, reinicie o vim e você poderá obter o recuo desejado:
:Tab record
Tanto quanto eu posso dizer, o resultado final disso é exatamente o que você está procurando - deixe-me saber se não funciona por algum motivo, ou se eu entendi mal os requisitos.