我目前正在尝试设置我的环境,以便我可以打开 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 实例,所以当你尝试关闭选项卡时你总是会收到警告,这并不理想。
如果您以前从未见过这种情况,那么当您使用上述任务时,关闭标签时会弹出以下内容:
经过大量搜索后,我找到了这个链接,其中包含 ConEmu 作者在底部的评论:
他说道:
是的,这是可行的。但是这种方法将 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
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"
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""