用vim和gcc分离srcdir和objdir
当我在 vim 中工作时,我当前的工作目录 (./) 包含我的所有源代码。我构建了一个 objdir,我们称之为 ./builddir/
。当我使用 makeprg=make\ -C\ builddir
从 vim 构建时,编译器警告和错误都有一个 ../
前缀,这意味着 vim 将光标带入到一个不存在的文件。
如果我尝试不同的策略,从 objdir 启动 vim,那么我就不能简单地执行 gf
或 :e myfile.h
这样的命令。
是否有一个中间立场可以让所有这些都起作用,例如如果 vim 在当前工作目录中找不到文件,则为 vim 提供第二个目录进行搜索?或者也许让 gcc 使用不同的前缀?
When I'm working in vim, my current working directory (./) contains all my source. I build in an objdir, let's call it ./builddir/
. When I build from vim, using makeprg=make\ -C\ builddir
, the compiler warnings and errors all have a prefix of ../
, which means vim brings the cursor to a file which doesn't exist.
If I try a different tactic, launching vim from the objdir, then I can't do commands like gf
or :e myfile.h
simply.
Is there a middle ground where all of this will work, like giving vim a second directory to search from if it can't find files in the current working directory? Or maybe getting gcc to use a different prefix?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
最简单的解决方案是使用 sed 过滤 make 输出以替换输出路径名。 (我已经实现了一个非常类似的方法,将 cygwin 路径名转换为 vim 的 win32 风格的 windows 路径名)。
像这样的东西:(
可能是
\|
而不是|
,我不记得了)The most simple solution would be to filter make outputs with sed to replace the output pathnames. (I've implemented a very similar thing to convert cygwin pathnames into windows pathnames for the win32 flavour of vim).
Something like:
(It may be
\|
and not|
, I don't remember)