0

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

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

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

build Foo.txt

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

:echo(&makeprg)
build\ %

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

4

2 回答 2

1

你为什么需要这个?对于故障排除,我可能只是附加echo'makeprg'(这是 后面的尾随空格\):

:setl makeprg^=echo\ 

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

:echo join(map(split(&makeprg), 'expand(v:val)'))
于 2012-10-02T12:47:08.160 回答
0

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

于 2015-07-10T13:52:45.310 回答