2

В настоящее время я пытаюсь настроить свою среду так, чтобы я мог открыть вкладку ConEmu, и она автоматически инициализирует Far Manager и среду командной строки VS Developer.

Моя неудачная попытка была такая:

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 в вашем дереве рабочих процессов.

Другой способ - запустить vcvarsall.bat из вашей оболочки (PowerShell или Far Manager) и экспортировать измененную среду из 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.

Это не совсем жизнеспособное решение сделать это вручную, потому что у меня так много разных сред для настройки. Учтите, что мне нужна отдельная вкладка для каждого компилятора, который я использую (MSVC, Clang, GCC, Intel C++ - иногда несколько версий каждого и почти всегда несколько архитектур).

По сути, мне нужен способ настроить задачу так, чтобы я мог запустить пакетный файл, а затем Far (чтобы он наследовал переменные env), не оставляя висящий экземпляр cmd.exe. Или мне нужно иметь возможность настроить задачу так, чтобы я мог автоматически запускать команды (разные для каждой задачи) после запуска Far.

Я почти уверен, что будет какой-то черный магический способ сделать это, но я еще недостаточно знаком с ConEmu/Far, чтобы понять это.

Если я впаду в отчаяние, то, возможно, в конце концов напишу плагин, но я бы предпочел этого избежать, если смогу.

2 ответа2

2
  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\")""
    
0

Я сделал это, объединив две предопределенные чудовищные команды для {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""

Скриншот настроек

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .