Ftp linklerini local ile değiştirmek için vim pattern


1

Soru

Büyük bir html dosyası kütlesine göre sıralayacağım ve bir ftp sitesine giden bağlantıları yerel bağlantılarla değiştireceğim. Vim kullanıyorum ve %s/find/replace/gbununla kullanmak için bir desen bulmaya çalışıyorum.

href="ftp://some/directory/to/a/random.pdf"

ve ile değiştirin

href="local/directory/random.pdf"

aslında dosya adı dışındaki her şeyi değiştirir. Tek bir html dosyasında birden fazla ftp dizini bulunacaktır, dolayısıyla desen her tür ftp bağlantısıyla eşleşebilmelidir . Bu ftp dosyalarının tümü aynı yerel dizine girecektir. Dosyaların çoğu pdfs olmasına rağmen, bazıları ptts ve diğer rasgele dosyalardır.

Vim'in kalıpları böyle birşeyle eşleşebiliyor mu ve eğer öyleyse bu kalıp nasıl görünür?

Cevap

@ akira cevabında verilen regex ile harika bir iş yaptı. Bunu tekrar kullanılabilir bir işleve sokmanın bir yolunu bulmak için kendi başıma dışarı çıktım ve işte bunu buldum:

(vimrc'nizin içinde) eşleşen dizeyi değiştirmek için bir dize geçirmenize izin veren bir işlev tanımlayın

function SwitchFtp(local)
    execute ':%s,href="ftp://.*/\(.\+\)",href="'.a:local.'\1",g'
endfunction

(isteğe bağlı) bu işlevi bir komuta atayın, böylece kullanmak zorunda kalmazsınızcall

command -nargs=1 SwitchFtp call SwitchFtp(<f-args>)

Bu daha sonra gibi bir şey ile çağrılır

:SwitchFtp local/directory/

öyleyse, "her şeyi 'ftp: //' den son '/' e değiştiriniz"?
akira

evet, eğer mümkünse, dosya adını kendisi ile eşleştirmeden.
webdess'ler

Yanıtlar:


1
:%s,href="ftp://.*/\(.\+\)",href="local/directory/\1",g

Soruyu bir açıklama ile güncelledim. Ftp sitesinde ortak bir dizin olmayacak, bu dosyalar birden fazla dizinden bağlanacak, dolayısıyla bir desene ihtiyaç var.
webdesserts

haha, bu muhteşem. Şimdi bu şeyi bir işleve dönüştürmeye çalışmak için (yardımlar takdir edilir, ancak kalıp iyi bir başlangıçtır). Yardım için teşekkürler! Bunu daha sonra nasıl yaptığınıza bakmam gerekecek. İçinde henüz görmedim bir sürü şey.
webdesserts

0

Almak

href="ftp://some/directory/to/a/random.pdf"

ve ile değiştirin

href="local/directory/to/a/random.pdf"

İstediğiniz

:s#ftp://some/#local/#
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.