Como posso editar a parte idêntica de vários arquivos de uma só vez?

Como posso editar a parte idêntica de vários arquivos de uma só vez?

Tenho vários arquivos HTML que formam um pequeno site. Várias linhas de código são duplicadas na parte superior dos arquivos (embora sejam <title>diferentes) e algumas linhas são duplicadas na parte inferior.

Eu poderia usar um pré-compilador como o Jekyll e usar layouts, então só preciso alterar o código uma vez, mas sinto que isso adiciona complexidade desnecessária ao projeto. Eu poderia usar regexes (que é o que estou fazendo atualmente, usandoDirDo.vim), mas isso é um pouco incômodo.

Então, existe algum plugin que detecte as partes idênticas de um conjunto de arquivos e permita editar todas elas de uma vez? Ou há alguma outra maneira de fazer isso que eu talvez não tenha pensado?

Responder1

No Vim, esse problema pode ser dividido em duas partes:

  1. Aplicando uma edição a vários arquivos
  2. Repetindo a mesma edição

Para 1., você está usando oDirDoplugar; alternativas seriam o embutido :argdo, :bufdo, etc.

Para 2., você pode usar qualquer (combinação de) comandos do Vim. O mais poderoso é :substituteusar a :[range]para selecionar as linhas e uma expressão regular para (encontrar o ponto para) modificar o texto nessas linhas.

Você também pode gravar uma macro e reaplicá-la via :normal! @a. Ou seja, se esta for uma edição única no início de uma única linha, uma repetição via :[address]normal! .seria suficiente (mas é limitada a uma única operação de edição e ao fato de :normalposicionar o cursor no início da linha).

Responder2

Você pode usarCtrlSF.vimpara procurar um determinado padrão em todos os arquivos e, em seguida, editar simultaneamente a parte em torno dos resultados da pesquisa usandovim-cursores múltiplos. Existem algumas limitações, por exemplo, você não pode adicionar ou excluir linhas (veja README.md).

informação relacionada