如何将单个文字波浪号(在运行时路径中)作为模式传递给VimScript中的substitute()?

时间:2013-03-06 19:53:35

标签: command-line vim

我正在尝试在启动期间使用VimScript的substitute()替换Vim中的默认runtimepath(又名rtp)。我无法使用.vimrc,因为我设置的值在.vimrc中不可用。但是,似乎Vim抱怨每次尝试将~作为模式(第二个参数)传递给substitute()或最终无效。

如何告诉Vim匹配并随后更换波浪号?我想要做的大概就是:

vim -c 'let &rtp = substitute(&rtp, "\\~", "/absolute/path", "g")'

结果\~给了我:E33: No previous substitute regular expression(虽然这是模式,不是的替代品)。但是在命令行中使用上面的\\~,虽然Vim没有给我一个错误,但我也看不到runtimepath值的任何变化。

注意:我将-c 'set rtp'附加到上面的命令行,以便Vim立即向我显示该值。

替换 VimScript中~变量中runtimepath的所有实例的替代方法也是可以接受的。

1 个答案:

答案 0 :(得分:0)

我不了解你,但在这里,&rtp不包含单个代字号:所有文件路径都是绝对的:/home/romainl/.vim/something

let aaa = substitute(&rtp, "/home/romainl", "~", "g")

将所有相关文件路径转换为~/.vim/something

let bbb = substitute(aaa, "\\~", "/home/romainl", "g")

将所有~/.vim/something变回/home/romainl/.vim/something