问题

问题

问题

我将对大量 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/#

相关内容