%code%
é o jogo inteiro. Para usar apenas parte dele, você precisa configurá-lo assim e usar \ 1
.s/(\([0-9]*\))/{}/
Mais instruções detalhadas você pode encontrar aqui ou na ajuda do vim.
Estou trabalhando com VIm
e tentando configurar um comando de pesquisa e substituição para fazer algumas substituições em que posso reutilizar a expressão regular que faz parte da minha cadeia de pesquisa.
Um exemplo simples seria uma linha onde eu quero substituir (10)
to {10}
, onde 10 pode ser qualquer número.
Eu cheguei até aqui
.s/([0-9]*)/what here??/
que corresponde exatamente à parte que eu quero.
Agora a substituição, eu tentei
.s/([0-9]*)/{ .s/(\zs[0-9]*\ze)/{ .s/([0-9]*)/what here??/
}/
}/
Mas, isso dá como saída {(10)}
Então, eu tentei
.s/([0-9]*)/{ .s/(\zs[0-9]*\ze)/{%pre%}/
}/
No entanto, isso me deu ({10})
, que também fecho, mas não o que eu quero.
Acho que preciso de algum outro tipo de marcação / back-referenciação em vez deste %code%
, mas não sei onde procurar. Então a questão é, isso pode ser feito no vim, e se sim, como?
%code%
é o jogo inteiro. Para usar apenas parte dele, você precisa configurá-lo assim e usar \ 1
.s/(\([0-9]*\))/{}/
Mais instruções detalhadas você pode encontrar aqui ou na ajuda do vim.
Eu herdei recentemente alguns códigos legados e queria substituir todas as ocorrências como:
print "xx"
print x,y
print 'xx'
para
logging.info("xy")
ou
logging.info(x,y)
Com base na resposta anterior e na esperança de que alguém se beneficie dela Eu usei o seguinte comando, que mudará todas as ocorrências:
%s/print\( .*\)/logging.info\(\)/g
Se você substituir %
por .
e remover /g
, você acabará
com
.s/print\( .*\)/logging.info\(\)
que permitirá que você analise cada partida e escolha se deseja alterá-la ou não.
A melhor forma de permitir que você repasse cada correspondência é adicionar um "c" ao final do código, em vez de ir linha por linha
%s/print\( .*\)/logging.info\(\)/gc
Tags vim vi replace regular-expression