问题
我将对大量 html 文件进行分类,并将指向 ftp 站点的链接替换为本地链接。我正在使用 vim,并试图找出一个模式来%s/find/replace/g
匹配如下字符串
href="ftp://some/directory/to/a/random.pdf"
并将其替换为
href="local/directory/random.pdf"
本质上替换了除文件名本身之外的所有内容。单个 html 文件中会有多个 ftp 目录,因此该模式应该能够匹配任何类型的 ftp 链接。所有这些 ftp 文件都将进入同一个本地目录。虽然大多数文件都是 pdf,但有些是 ptts 和其他随机文件。
Vim 的模式是否能够匹配类似这样的内容?如果可以,那么该模式会是什么样子?
回答
@akira他的答案中提供的正则表达式做得非常好。我自己想办法把它放到一个可重用的函数中,这就是我想到的:
(在你的 vimrc 中)定义一个函数,允许你传递一个字符串来替换匹配的字符串
function SwitchFtp(local)
execute ':%s,href="ftp://.*/\(.\+\)",href="'.a:local.'\1",g'
endfunction
(选修的)将此功能分配给命令,这样您就不必使用call
command -nargs=1 SwitchFtp call SwitchFtp(<f-args>)
然后可以使用类似如下的方式调用
:SwitchFtp local/directory/
答案1
:%s,href="ftp://.*/\(.\+\)",href="local/directory/\1",g
答案2
采取
href="ftp://some/directory/to/a/random.pdf"
并将其替换为
href="local/directory/to/a/random.pdf"
你要
:s#ftp://some/#local/#