Uma opção é usar :set formatoptions+=n
em conjunto com um formatlistpat
personalizado. A opção n
reformata listas numeradas, prefixando o número equivalente de espaços em linhas com quebra automática. Ele pode ser adaptado para uso neste caso, definindo um líder de lista apropriado:
set fo+=n
let &flp='\w\+> '
Para ilustrar os efeitos, considere o seguinte exemplo:
alice> foo bar baz qux foo bar baz qux
bob> foo bar baz qux foo bar baz qux
Usando tw=20
neste caso, g q } produz:
alice> foo bar baz
qux foo bar
baz qux
bob> foo bar baz qux
foo bar baz qux
Esse método envolve corretamente as linhas sem alterar tw
, mas apenas preenche os espaços. Se name>
precisar ser acrescentado a cada nova linha, outra operação será necessária, mas isso pelo menos manipulará a quebra automática.
Como alternativa, as cotações nesse formato podem ser tratadas como comments
. Infelizmente este método não aceita regex e, portanto, requer nomes explícitos. O b
flag pode ser usado para exigir espaço em branco após o líder do comentário:
set comments+=b:alice>,b:bob>
Com isso, usando o mesmo exemplo acima, a reformatação produz:
alice> foo bar baz
alice> qux foo bar
alice> baz qux
bob> foo bar baz qux
bob> foo bar baz qux
Aqui está uma função simples que utiliza isso e um comando correspondente por conveniência:
function! Format(name1, name2)
execute "set comments+=b:" . a:name1 . ">,b:" . a:name2 . ">"
execute "normal gq}"
execute "set comments-=b:" . a:name1 . ">,b:" . a:name2 . ">"
endfunction
command! -nargs=* F call Format(<f-args>)
Assim, :F alice bob
pode ser usado para produzir os resultados da amostra acima.