Padrão Vim para substituir os links ftp com os locais

1

Pergunta

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?

Resposta

@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/
    
por webdesserts 14.03.2012 / 19:57

2 respostas

1
:%s,href="ftp://.*/\(.\+\)",href="local/directory/",g
    
por 14.03.2012 / 20:13
0

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/#
    
por 14.03.2012 / 20:49

Tags