vim的Quickfix窗口的替换规则

时间:2014-03-28 07:05:04

标签: vim

我有一个C ++项目,*.cpp文件位于c:\project。我还使用伪树外构建系统,它使用c:\project\build目录作为每个可执行文件,目标文件,自动生成文件等的输出目录。

通常情况下,当vimPWD时,我正在启动c:\project

$ vim <file>

当我使用:make命令时,我的构建工具启动并开始编译项目。如果有任何错误,我在Quickfix窗口(:cope)中获得通常的错误列表。问题是“我的”构建工具(btw,它的waf工具)是从c:\project\build目录而不是c:\project执行的,所以对源文件的任何引用都将相对于c:\project\build目录。这意味着对于此文件:c:\project\main.cpp,如果出现错误,我将收到如下错误消息:

..\main.cpp:9:0: <errormessage>

Vim的g++解析器接受此错误行,从中提取文件(..\main.cpp),但在点击回车后它不会打开它,因为vim的会话的PWD是c:\project 。点击回车后,vim会尝试打开c:\main.cpp

我可以从c:\project\build目录启动vim并且它正常工作,但这反过来会导致像CtrlP这样的vim插件出现问题,所以我想从项目的根目录启动vim会话,而不是构建的根。

vim是否可以将..\替换为空字符串?我要求similar option that gdb has(源路径替换)。

1 个答案:

答案 0 :(得分:1)

我在发布问题后不久就设法找到了解决方案。我需要更多地练习橡皮鸭调试。

我已经通过创建构建脚本(m.cmd)来修复此问题:

@echo off
waf 2>&1 | sed "s#^..\\##g"

我确实设置了:set makeprg=m.cmd

现在它按预期工作。