Dado um grupo repetido como (...){n,m}
ou (...)+
, acho que não há nenhuma maneira de extrair cada ocorrência do grupo no Vim. Somente o último é disponibilizado em todas as funções e comandos relacionados ao regex.
Dito isto, você pode usar uma substituição aninhada:
:s/\v%([a-zA-Z]\s){3,}[a-zA-Z]/\=substitute(submatch(0), '\s', '', 'g')/gc
Um \=
na substituição de :s
faz o Vim avaliar a substituição como uma expressão. E nessa expressão, estou usando a função substitute()
para remover todos os espaços em todo o texto correspondente de :s
(obtido por submatch(0)
), dando Ligh
de L i g h
.