Как использовать Cmder в коде Visual Studio?

на работе существует корпоративная политика безопасности, где все исполняемые файлы могут работать только из C:Program Files или C:Program Files (x86).

в коде Visual Studio, в settings.json, используя следующие параметры:

{
    "terminal.integrated.shell.windows": "C:WindowsSysnativecmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/k C:Program Files (x86)Cmdervendorinit.bat"
    ]
}

...при инициализации для интегрированного терминала появляется следующее сообщение об ошибке:

'C:Program' is not recognized as an internal or external command, 
operable program or batch file.

из-за удивительного соглашения об именовании файлов/каталогов Windows, разрешающего пробелы, трудно указать на один из Program File пути.

VSCode не нравится, когда вы избегаете символа пробела, и этот код дает мне ошибку Invalid escape character in string. Когда я пытаюсь изменить свойство на это:

{
    ...
    "terminal.integrated.shellArgs.windows": [
        "/k C:Program Files (x86)Cmdervendorinit.bat"
    ]
}

...Я получаю следующее сообщение об ошибке:

'C:ProgramFiles' is not recognized as an internal or external command,
operable program or batch file.

наконец, пытаясь окружить путь в кавычках, как это:

{
    ...
    "terminal.integrated.shellArgs.windows": [
        "/k "C:Program Files (x86)Cmdervendorinit.bat""
    ]
}

...дает мне это сообщение об ошибке:

'"C:Program Files (x86)Cmdervendorinit.bat""' is not recognized as an 
internal or external command,
operable program or batch file.

есть ли способ интегрировать Cmder в VSCode?

3 ответов


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

в Windows есть /X на dir команда, которая гласит:

  /X          This displays the short names generated for non-8dot3 file
              names.  The format is that of /N with the short name inserted
              before the long name. If no short name is present, blanks are
              displayed in its place.

Итак, делаем dir /X команда on C:\ отображается следующая информация:

C:\>dir /X
 Volume in drive C is OSDisk
 Volume Serial Number is XXXX-XXXX

 Directory of C:\

...
08/17/2017  08:02 PM    <DIR>          PROGRA~1     Program Files
08/09/2017  03:58 PM    <DIR>          PROGRA~2     Program Files (x86)
...

вы можете использовать короткое имя каталога PROGRA~2 заменить Program Files (x86), и имеют следующие параметры settings.json для VS кода:

{
    "terminal.integrated.shell.windows": "C:\Windows\Sysnative\cmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/k C:\PROGRA~2\Cmder\vendor\init.bat"
    ]
}

что делает загрузку Cmder успешно в интегрированном терминале:

Image of Cmder being successfully loaded in the VS Code integrated terminal.


другое решение - вы можете установить свое местоположение cmder в новый путь

image was from nikrolls when giving the solution

и просто установите в настройках.в JSON

"terminal.integrated.shell.windows": "C:\Windows\system32\cmd.exe",
"terminal.integrated.shellArgs.windows": [
    "/k %CMDER_ROOT%\vendor\init.bat"
]

вы можете найти выпуск cmder github


это работа для меня. Мой корневой каталог Cmder: D:\soft\cmder внимание твое!

"terminal.integrated.env.windows": {"CMDER_ROOT": "D:\soft\cmder"},
"terminal.integrated.shellArgs.windows": ["/k D:\soft\cmder\vendor\init.bat"],

добавьте его в настройки VSCode. наслаждайтесь!