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/g
bununla 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/