在Vim中通过modeline设置“makeprg”

时间:2010-07-28 14:48:20

标签: vim makefile

默认情况下,makeprg设置为make。但是,我有很多项目,其中不同的构建配置和目标位于同一目录中。

这当然需要我在调用make时指定目标。

例如,我有一个项目设置为通过调用<foo>.cpp来构建源文件make foo,该项目包含许多此类源文件。

当我在Vim中编辑<foo>.cpp时,如何makeprg设置为make <foo>我在每个文件中都想到了吗? ,但禁止通过模式行设置makeprg(由于安全问题?)。

请注意,此设置仅适用于某些项目,因此我不想修改make常规值 - 否则我只是

set makeprg=make\ expand("%:t:r")
.gvimrc中的

(或类似的东西)。

3 个答案:

答案 0 :(得分:4)

我正在使用我的plugin,它可以启用项目特定的设置来调整这类事物。 这样我的.vimrc就不会出现特定于项目的事情。相反,在每个项目根目录中,我有一个_vimrc_local.vim文件,其中包含我的各种设置。

另一种解决方案是将:make调用封装到另一个命令或映射中,然后使用您可以使用另一个插件设置的变量调用:makelet-modeline

PS:.gvimrc旨在包含特定于vim图形版本的内容。通过将您的设置放入.gvimrc,将不会配置普通vim。

答案 1 :(得分:1)

您应该能够映射:make %<,我相信它会做您想做的事情

答案 2 :(得分:0)

如果你可以区分你的项目不是通过模式而是通过它们的文件夹,那么应该可以使用与自动命令类似的东西。以下是:help autocmd-patterns示例和示例代码的组合。

:autocmd BufRead /source/foo-project/*.cpp set makeprg=make\ expand("%:t:r")

(请注意,我没有测试过这个确切的命令,而是根据我的vimrc中的文件类型设置makeprg的一些自动命令)