用vim和gcc分离srcdir和objdir

发布于 2024-09-30 06:55:09 字数 388 浏览 2 评论 0原文

当我在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷路的信 2024-10-07 06:55:09

最简单的解决方案是使用 sed 过滤 make 输出以替换输出路径名。 (我已经实现了一个非常类似的方法,将 cygwin 路径名转换为 vim 的 win32 风格的 windows 路径名)。

像这样的东西:(

:let &makeprg .= '2>&1 | sed "s#^\.\./##g"'

可能是 \| 而不是 |,我不记得了)

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:

:let &makeprg .= '2>&1 | sed "s#^\.\./##g"'

(It may be \| and not |, I don't remember)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文