:%s,href="ftp://.*/\(.\+\)",href="local/directory/",g
Vou classificar uma grande quantidade de arquivos html e substituir links para um site ftp com links locais. Estou usando o vim e estou tentando descobrir um padrão para usar com %s/find/replace/g
que corresponderá a uma string como
href="ftp://some/directory/to/a/random.pdf"
e substitua por
href="local/directory/random.pdf"
essencialmente substituindo tudo, exceto o próprio nome do arquivo. Haverá vários diretórios ftp em um único arquivo html para que o padrão seja capaz de corresponder a qualquer tipo de link ftp . Todos esses arquivos ftp entrarão no mesmo diretório local. Embora a maioria dos arquivos sejam pdf, alguns são ptts e outros arquivos aleatórios.
Os padrões do Vim são compatíveis com algo assim e, em caso afirmativo, como seria esse padrão?
@akira fez um ótimo trabalho com o regex fornecido em sua resposta. Eu saí sozinho para encontrar uma maneira de colocar isso em uma função reutilizável e foi isso que eu criei:
(dentro do seu vimrc) defina uma função que permita passar uma string para substituir a string correspondente
function SwitchFtp(local)
execute ':%s,href="ftp://.*/\(.\+\)",href="'.a:local.'",g'
endfunction
(opcional) atribui esta função a um comando para que você não tenha que usar call
command -nargs=1 SwitchFtp call SwitchFtp(<f-args>)
Isso seria chamado com algo como
:SwitchFtp local/directory/
Para levar
href="ftp://some/directory/to/a/random.pdf"
e substitua por
href="local/directory/to/a/random.pdf"
você quer
:s#ftp://some/#local/#