设置runtimepath,从vim中的表达式添加目录?

时间:2011-01-04 20:09:14

标签: bash runtime vim

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时,未显示所需的附加字符串(但其他字符串都在那里)。

2 个答案:

答案 0 :(得分:20)

我对@Laurence Gonsalves的答案有一些补充:

  1. 还有«concat和assign»运算符:.=,所以

    let foo=foo.bar
    

    可以改写为

    let foo.=bar
    
  2. 代码

    let &runtimepath.=','.string(path)
    

    会将,'/some/path'附加到& runtimepath,而您可能需要,/some/path

  3. 我想你想要将脚本的路径附加到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')

.是字符串连接运算符。)