将makeprg设置为VIM功能?

时间:2011-03-29 16:46:56

标签: vim

我正在使用VIM处理Visual Studio解决方案,我编写了一个从当前文件向上搜索文件系统并找到第一个* .sln文件的函数。

我想做的是这样的事情:

function! BuildSLN()
    " FindSLN is my function that locates the sln "
    let slnfile = FindSLN()
    if slnfile != ""
        execute "!devenv " . slnfile . " /Build Debug"
    endif
endfunction

CompilerSet makeprg=:call BuildSLN()

这样,我可以使用我当前为:make设置的键绑定来构建解决方案文件。

这可能吗?

2 个答案:

答案 0 :(得分:3)

我找到了一个解决方案,虽然从技术上来说不是我自己问题的答案:)

由于我每次进入C#或VB.net缓冲区时都会加载编译器设置,我只是这样做:

let &l:makeprg='"devenv.com "' . FindSLN() . '" /Build Debug"'

在编译器设置文件中。这给了我想要的效果,但是从技术上讲它并没有将makeprg设置为一个函数,该函数将在调用:make时进行评估,就像最初请求的那样。

答案 1 :(得分:0)

你可以定义一个映射/功能/命令/:

  • 确保您的makeprg设置正确
  • 执行:make
  • 如果发生错误,执行a:copen。

就个人而言,当我从目录(that I associate to a project)编辑文件时,我宁愿设置makeprg。还有一些映射可以切换编译模式方面(调试/发布,后台/不兼容,目标(交叉编译/不),多线程编译/不等)。每次更改其中一个方面时,我都会更新makeprg。