我正在尝试在启动期间使用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
的所有实例的替代方法也是可以接受的。
答案 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
。