Troque palavras no VIM sem usar plugins de terceiros

1

Supondo que eu tenha um arquivo contendo apenas caracteres e números (sem caracteres especiais ou sinais de pontuação), como posso trocar duas palavras que podem ou não estar ao lado uma da outra usando o VIM?

Eu tentei o seguinte (trocar todas as ocorrências de "Tom" com "Jerry"), mas não funciona por razões óbvias.

:% s / Tom / Jerry / g :% s / Jerry / Tom / g

Obrigado!

    
por Automation Zombie 23.03.2017 / 00:53

2 respostas

4

Talvez você possa usar uma variável intermediária como essa

​:%s/Tom/XX9G235a65/g​ :%s/Jerry/Tom/g :%s/XX9G235a65/Jerry/g
    
por 23.03.2017 / 00:58
1

Aqui estão duas variantes (ambas usando :help sub-replace-expression e igualmente incômodas) que usam um operador condicional e uma pesquisa de dicionário, respectivamente:

:substitute/\<\(Tom\|Jerry\)\>/\=submatch(0) ==# 'Tom' ? 'Jerry' : 'Tom'/g
:substitute/\<\(Tom\|Jerry\)\>/\={'Tom':'Jerry', 'Jerry':'Tom'}[submatch(0)]/g

Com isso, você não precisa de um intermediário como na resposta do @ MichaelDurrant.

    
por 29.10.2018 / 16:24

Tags