我试图在启动期间使用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
。