我正在使用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
设置的键绑定来构建解决方案文件。
这可能吗?
答案 0 :(得分:3)
我找到了一个解决方案,虽然从技术上来说不是我自己问题的答案:)
由于我每次进入C#或VB.net缓冲区时都会加载编译器设置,我只是这样做:
let &l:makeprg='"devenv.com "' . FindSLN() . '" /Build Debug"'
在编译器设置文件中。这给了我想要的效果,但是从技术上讲它并没有将makeprg设置为一个函数,该函数将在调用:make
时进行评估,就像最初请求的那样。
答案 1 :(得分:0)
你可以定义一个映射/功能/命令/:
就个人而言,当我从目录(that I associate to a project)编辑文件时,我宁愿设置makeprg。还有一些映射可以切换编译模式方面(调试/发布,后台/不兼容,目标(交叉编译/不),多线程编译/不等)。每次更改其中一个方面时,我都会更新makeprg。