Vim errorformat:使用%D更改目录

Vim errorformat:使用%D更改目录,vim,errorformat,Vim,Errorformat,我正在努力找到正确的Vimerrorformat,以便在当前目录是带有错误文件的目录的同级目录时使用。例如: errorformat errorformat/model errorformat/spec Vim的makeprg选项设置为执行errorformat/spec格式的文件。我从errorformat/model运行make。Vim被设置为使用当前文件的目录作为工作目录 为了测试,我在errorformat/model/errorformat.vim中运行以下命令 set makepr

我正在努力找到正确的Vim
errorformat
,以便在当前目录是带有错误文件的目录的同级目录时使用。例如:

errorformat
errorformat/model
errorformat/spec
Vim的
makeprg
选项设置为执行
errorformat/spec
格式的文件。我从
errorformat/model
运行make。Vim被设置为使用当前文件的目录作为工作目录

为了测试,我在
errorformat/model/errorformat.vim中运行以下命令

set makeprg=ruby\ ~/errorformat/spec/errorformat_spec.rb
let &efm="%D%f,%f:%l"
make!
copen
如您所见,它在兄弟目录中运行一个Ruby文件

puts %{errorformat}
puts %{./spec/errorformat_spec.rb:1}
exit 5
理想的效果是,当我从不同的目录运行spec时,Vim将使用
errorformat
中的
%D
来打开spec文件。但它不起作用。特别是,我似乎无法让
%D%f
实现我的期望。当我运行此测试时,QuickFix窗口显示

|| errorformat
|| ./spec/errorformat_spec.rb:1
双栏表示
%D%f
部分的
错误格式
无法识别输出。这似乎也会阻止下一行被
%f:%l
部分解释


我一定错过了一些很简单的东西

问题在于错误格式的顺序。
%D%f
部分需要在
%f:%l

部分之后执行

能否显示您尝试分析的错误文件的输出?这不是分隔符的问题(在%D和%f之间)?我试图分析的输出是
errorformat
/spec/errorformat\u spec.rb:1
我似乎无法将此输出放在注释中的单独行中。