Grupos de captura :help /\(
permitem que você armazene o que é correspondido pelo padrão dentro %código%; você pode referenciar a correspondência (via \(...\)
para o primeiro grupo, , e assim por diante) na substituição (ou mesmo depois no próprio padrão).
Uma abordagem (há muitas) para o seu problema é capturar o nome do arquivo antes da extensão . Na substituição, coloque a captura (
.tar.gz
), um espaço e, em seguida, o texto original ( ou
): &
:%substitute/\(.*\)\.tar\.gz$/ &/
Como alternativa, você pode apenas combinar as coisas antes da extensão (terminar a correspondência com \ze
) e depois duplicar isso:
:%substitute/.*\ze\.tar\.gz$/& &/
Problemas com sua tentativa
- Você usou a referência de referência
, mas nunca capturou nada.
- O
[a-z_-]
não corresponde a um literal.
, mas isso aparece no seu exemplo. - Não há escape do% final% co_de (como
.
); corresponderia a qualquer personagem. - Nenhuma duplicação na peça de substituição; você efetivamente removeu o texto em vez de adicionar.