如何让 ConEmu、Far Manager 和 VS Developer 命令提示符协同运行?

如何让 ConEmu、Far Manager 和 VS Developer 命令提示符协同运行?

我目前正在尝试设置我的环境,以便我可以打开 ConEmu 选项卡并且它将自动初始化 Far Manager 和 VS 开发人员命令提示符环境。

我的失败尝试是这样的:

cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64_x86 & far -new_console:d:C:\My\Code

这个方法可以实现我想要的效果,但是 ConEmu 不喜欢它,因为它会留下一个活动的 cmd.exe 实例,所以当你尝试关闭选项卡时你总是会收到警告,这并不理想。

如果您以前从未见过这种情况,那么当您使用上述任务时,关闭标签时会弹出以下内容:

http://i.imgur.com/o0GyS5I.png

经过大量搜索后,我找到了这个链接,其中包含 ConEmu 作者在底部的评论:

http://www.gurustop.net/blog/2014/02/01/using-visual-studio-developer-command-prompt-with-powershell/

他说道:

是的,这是可行的。但是这种方法将 cmd.exe 留在了您的工作进程树中。

另一种方法 - 从 shell(PowerShell 或 Far Manager)运行 vcvarsall.bat,并将更改的环境从 cmd 导出到父进程。优点 - 您可以在运行时设置不同的设置。

描述:https://code.google.com/p/cone...

示例命令(我使用的是 Far Manager 中的命令):“C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat” x86 & “%ConEmuBaseDir%\ConEmuC.exe” /export=CON

但问题是,我必须在运行 far 后手动运行此命令。我似乎找不到在初始化 Far 后自动运行该命令的方法。

手动操作并不是一个可行的解决方案,因为我需要设置许多不同的环境。考虑到我想要为我使用的每个编译器设置不同的选项卡(MSVC、Clang、GCC、Intel C++ - 有时每个编译器都有多个版本,而且几乎总是有多个架构)。

基本上,我需要一种设置任务的方法,以便我可以运行批处理文件,然后运行 ​​Far(这样它就会继承环境变量),而不会留下悬空的 cmd.exe 实例。或者,我需要能够设置任务,以便在运行 Far 后自动运行命令(每个任务不同)。

我很确定肯定有一些黑魔法可以做到这一点,但我对 ConEmu/Far 还不够熟悉,无法弄清楚。

如果我非常绝望,我可能会最终编写一个插件,但如果可以的话,我宁愿避免这样做。

答案1

  1. ConEmu 有分叉能力。因此,您可以直接致电

    -new_console:d:C:\My\Code cmd.exe /c ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64_x86 & ConEmuC -fork -c far"
    
  2. Far Manager 有自己的宏系统。您可以设置“自动启动”宏,也可以直接通过命令行传递。考虑适当的引用!只需更改F2 F1为您的按键顺序即可。最简单的方法是将所需命令添加到 F2(用户菜单)。

    -new_console:d:C:\My\Code cmd.exe /c ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64_x86 & far "lua:Keys(\"F2 F1\")""
    

答案2

我通过组合 {Far} 和 {SDK::VS 15.0 x64 tools prompt} 的两个预定义的巨大命令来实现这一点&&

-new_console:t:"VS 15.0" -new_console:C:"%CommonProgramFiles(x86)%\microsoft shared\MSEnv\VSFileHandler.dll,38" cmd /c ""%ConEmuDrive%\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\Build\vcvarsall.bat" x64 && set "FARHOME=" & "%ConEmuDir%\..\Far Manager\far.exe" /w /p"%ConEmuDir%\Plugins\ConEmu;%FARHOME%\Plugins;%FARPROFILE%\Plugins""

设置屏幕截图

相关内容