默认情况下,makeprg
设置为make
。但是,我有很多项目,其中不同的构建配置和目标位于同一目录中。
这当然需要我在调用make
时指定目标。
例如,我有一个项目设置为通过调用<foo>.cpp
来构建源文件make foo
,该项目包含许多此类源文件。
当我在Vim中编辑<foo>.cpp
时,如何makeprg
设置为make <foo>
?我在每个文件中都想到了吗? ,但禁止通过模式行设置makeprg
(由于安全问题?)。
请注意,此设置仅适用于某些项目,因此我不想修改make
的常规值 - 否则我只是
set makeprg=make\ expand("%:t:r")
我.gvimrc
中的(或类似的东西)。
答案 0 :(得分:4)
我正在使用我的plugin,它可以启用项目特定的设置来调整这类事物。
这样我的.vimrc
就不会出现特定于项目的事情。相反,在每个项目根目录中,我有一个_vimrc_local.vim
文件,其中包含我的各种设置。
另一种解决方案是将:make
调用封装到另一个命令或映射中,然后使用您可以使用另一个插件设置的变量调用:make
:let-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的一些自动命令)