[英]Set “makeprg” via modeline in Vim
默认情况下, makeprg
设置为make
。 但是,我有很多项目,其中不同的构建配置和目标位于同一目录中。
当然,这需要在调用make
时指定一个目标。
例如,我有一个通过调用make foo
来构建源文件<foo>.cpp
的项目,该项目包含许多此类源文件。
当我在Vim中编辑说<foo>.cpp
时, makeprg
将makeprg
设置为make <foo>
? 我想到了每个文件中的模式行,但是禁止通过modeline设置makeprg
(出于安全考虑?)。
请注意,此设置仅适用于某些项目,因此我不想修改make
的常规值–否则,我只是
set makeprg=make\ expand("%:t:r")
(或类似的东西)在我的.gvimrc
。
我使用的是我的插件 ,该插件可以启用特定于项目的设置来调整此类内容。 这样,我的.vimrc
不会因项目特定的内容而混乱。 相反,在每个项目的根目录中,我都有一个_vimrc_local.vim
文件,其中包含我的各种设置。
另一个解决方案是将:make
调用封装到另一个命令或映射中,然后使用一个可以通过另一个插件let -modeline设置的变量来调用:make
。
PS: .gvimrc
旨在包含特定于vim图形版本的内容。 通过将设置放入.gvimrc
,将不会配置纯vim。
您应该能够映射:make %<
,我相信它将做您想要的
如果您不是通过modeline而是通过其文件夹来区分项目,则应该可以使用与自动命令相似的工具。 以下是来自:help autocmd-patterns
的示例和您的示例代码的组合。
:autocmd BufRead /source/foo-project/*.cpp set makeprg=make\ expand("%:t:r")
(请注意,我还没有测试这个确切的命令,相反,我有一些自动命令来设置makeprg,具体取决于我的vimrc中的文件类型)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.