[英]how to set makeprg in vim when your build system is compiling a copied version of the code
我一直在使用vim integrated make命令来帮助我构建,修复,重复工作循环。 我们正在转向使用makeprg轻松更改的新构建系统。
问题是新构建系统在构建之前将源代码复制到沙箱位置,因此当我收到编译错误时,vim会打开复制的文件。 我最终改变了这个复制的文件,而不是主代码路径中的实际文件。
有些方法我可以通过某种方式告诉vim我的代码库路径是什么来解决这个问题?
你可以使用至少三种策略来解决这个问题,不幸的是,它们只需要告诉vim一个“代码库路径”,它们都需要更多的工作。 在选择之前,我建议阅读:help make_makeprg
以便更好地了解:make
过程“引擎盖下”。
编写一个shell / perl / ruby /任何过滤构建过程输出的脚本,并根据/sandbox/src/blah.c
将文件名从/sandbox/src/blah.c
重写为src/blah.c
或/sandbox/src
到src
。 然后在运行make
时更改makeprg
以包含过滤器程序(在.vimrc
,添加以下内容:set makeprg=make\\ \\\\\\|\\ filter
)。 这可能很容易做到,但根据您使用的确切构建系统可能会变得更加棘手。
更改errorformat
(请参阅:help errorformat
)以删除沙箱前缀。 在某些情况下,这可能是不可能的,具体取决于构建系统的确切输出格式。
添加QuickFixCmdPost
自动命令,在开始使用之前将重写quickfix窗口中的文件路径:cnext
和friends。 如果您之前没有使用过Vim的自动命令功能,我会先尝试其他两种策略。 它们功能强大且非常实用,但它们需要一些练习才能做到正确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.