vim扩展了makeprg变量

时间:2012-10-02 10:54:33

标签: vim

我使用:set makeprg功能根据文件设置不同的make行为。这样做的一个特点是我可以使用%%<来引用活动缓冲区中的文件,以及$来查找环境变量。

我想回应扩展的 makeprg变量,但我似乎无法实现这一点。

例如,假设我有:set makeprg=build\ %,我正在处理文件Foo.txt。 我希望回显扩展makeprg的输出为:

build Foo.txt

但是,在回显&makeprg变量时,我们得到以下结果:

:echo(&makeprg)
build\ %

解决方案可能涉及使用expand(),除了这将涉及解析转义符号的&makeprg并适当处理环境变量$。我有什么解决方案吗?

2 个答案:

答案 0 :(得分:1)

你为什么需要这个?对于问题排查,我可能只需将echo附加到'makeprg'(这是\之后的尾随空格):

:setl makeprg^=echo\ 

但是以下应该做你想到的。诀窍是将'makeprg'字符串拆分为空格,并单独处理每个单词:

:echo join(map(split(&makeprg), 'expand(v:val)'))

答案 1 :(得分:0)

更接近事实: join(map(split(mystring, '\ze[<%#]'), 'expand(v:val)'), '')