如何在VimScript中传递单个文字波浪(在运行时路径中)作为替代()的模式



我试图在启动期间使用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变量中替换所有~实例的任何替代方法也是可以接受的。

我不知道你,但在这里,&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

最新更新