Inn ~/script.vim
,我有:
set runtimepath+=string(substitute(expand("%:p"), 'script\.vim', '', 'g'))
我在.bashrc
中有别名:
alias vimscript="vim -S ~/script.vim"
正在运行string(substitute(expand("%:p"), 'script\.vim', '', 'g'))
。
问题是在set runtimepath表达式中使用它时,当我在调用vimscript
的终端中调用script.vim
时,它不起作用。当我在被vimscript调用以检查运行时路径后在vim中运行set rtp
时,未显示所需的附加字符串(但其他字符串都在那里)。
答案 0 :(得分:20)
我对@Laurence Gonsalves的答案有一些补充:
还有«concat和assign»运算符:.=
,所以
let foo=foo.bar
可以改写为
let foo.=bar
代码
let &runtimepath.=','.string(path)
会将,'/some/path'
附加到& runtimepath,而您可能需要,/some/path
。
我想你想要将脚本的路径附加到runtimepath。如果是,那么您的代码应该写成
let &runtimepath.=','.escape(expand('<sfile>:p:h'), '\,')
在脚本中,或
let &runtimepath.=','.escape(expand('%:p:h'), '\,')
来自当前编辑会话(假设您正在当前缓冲区中编辑脚本)。
答案 1 :(得分:3)
set
命令的右手网站不是表达式,而是文字字符串。
您可以使用set
并使用let
为选项名称添加前缀来操作选项(&
集)。例如:
let &runtimepath=substitute(expand("%:p"), 'script\.vim', '', 'g')
要使用runtimepath
附加到let
,您可以执行以下操作:
let &runtimepath=&runtimepath . ',' . substitute(expand("%:p"), 'script\.vim', '', 'g')
(.
是字符串连接运算符。)