Executando verificação de segurança...
7

VSCode: como encontrar e substituir múltiplas linhas (multi-line find and replace)

Gostaria de compartilhar uma dica de VSCode caso você esteja procurando como encontrar e substituir múltiplas linhas em todos os arquivos da sua base de código, incluindo como ignorar quebras de linha e espaços em branco que podem variar conforme a indentação que as linhas que você quer substituir possam se encontrar.

Contexto

Estou neste exato momento trabalhando numa branch no repositório do TabNews que irá remover as propriedades parent_title, parent_slug e parent_username do objeto content, onde o problema é que temos vários testes automatizados de integração que esperam que estas 3 propriedades estejam presentes na resposta da API, nem que seja com o valor null (selecionei ali ao final do JSON):

Exemplo de teste de integração

E novamente, isto está espalhado por toda bateria de testes relacionados aos conteúdos e a questão que fica é: como fazer o replace de várias linhas ao mesmo tempo? Ainda mais considerando que, novamente, a indentação (quantidade de espaços na esquerda destas linhas), pode variar de arquivo para arquivo.

Ótima pergunta e é agora que o Visual Studio Code, junto com uma RegEx, (Regular Expression) vai nos ajudar muito nessa tarefa.

Como buscar e substituir incluindo as quebras de linha

Para substituir todos os arquivos ao mesmo tempo, utilize a função Replace in Files que pode ser acessada pelas teclas de atalho:

  • Ctrl + Shift + H no Windows
  • Cmd + Shift + H no Mac.

Após o menu na lateral se abrir, preencha o campo Search com a primeira linha que quer buscar e para considerar na busca uma quebra de linha com espaços que podem variar, utilize a RegEx [\s\S\n]+? e em seguida digite a segunda linha, e assim por diante. Para o meu caso foi o seguinte:

parent_title: null,[\s\S\n]+?parent_slug: null,[\s\S\n]+?parent_username: null,

Importante: Não se esqueça de, nas opções da busca, habilitar a opção Use Regular Expression que possui o ícone de um "ponto e asterisco" .*, do contrário a RegEx não terá efeito.

Então veja na imagem abaixo o resultado da busca destacado, onde identificou mesmo no caso de forçar espaços adicionais ali na segunda parte do JSON de retorno:

VSCode - Utilizando RegEx para fazer busca em múltiplas linhas

Conclusão

Espero sinceramente que isso economize o seu tempo e reduza a margem de erro nas suas substituições de código 🤝

🛑 Um pedido sincero

Estamos realmente tentando construir um pedaço de internet mais massa aqui no TabNews, então você poderá nos ajudar DE VERDADE se compartilhar o link desta publicação em outros lugares, pode ser 1 grupo de Facebook, ou grupo de Discord, Whatsapp, onde for que você acredite que faça sentido e as pessoas de lá vão gostar de aprender sobre essa novidade, combinado? Valeu demais 🤝

Carregando publicação patrocinada...