46

在工作中,有一个企业安全策略,其中所有可执行文件只允许用完C:\Program FilesC:\Program Files (x86).

在 Visual Studio Code 中settings.json,使用以下设置:

{
    "terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\cmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/k C:\\Program Files (x86)\\Cmder\\vendor\\init.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)\\Cmder\\vendor\\init.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)\\Cmder\\vendor\\init.bat\""
    ]
}

...给我这个错误信息:

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

有没有办法将 Cmder 集成到 VSCode 中?

4

14 回答 14

74

在网上搜索答案后,我找不到解决方案,但我想通了,想我可以在这里发布给其他人看,因为我看到来自不同论坛的人有同样的问题,但没有回答。

在 Windows 中,有一个/Xfordir命令,其中指出:

  /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命令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.jsonfor VS Code 中进行以下设置:

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

在集成终端中成功加载 Cmder:

在 VS Code 集成终端中成功加载 Cmder 的图像。

于 2017-08-18T22:34:56.050 回答
24

另一种解决方案是您可以将您的cmder位置设置为新路径

给出解决方案时,图像来自 nikrolls

只需在您的 settings.json 中设置

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

你可以在cmder github问题上找到它

于 2017-11-25T00:23:54.220 回答
12

这是“2021”的新方法

本文相关

第 1 步:下载 Cmder

第 2 步:将 Cmder 保存到 C:\ 驱动器

第 3 步:在 VSCode 中打开 Settings.json(文件 - 首选项 - 设置 ...)

第 4 步:输入此参数:

"terminal.integrated.profiles.windows": {
    "Cmder": {
      "path": "${env:windir}\\System32\\cmd.exe",
      "args": ["/k", "C:\\cmder\\vendor\\bin\\vscode_init.cmd"]
    }
  },
  "terminal.integrated.defaultProfile.windows": "Cmder",
于 2021-05-29T00:03:13.763 回答
10

另一种方法。

Cmder 团队建议^在路径中的每个空格之前添加一个字符,而不是使用 8dot3 命名方法。

例子:

{
    "terminal.integrated.shell.windows": "C:\\Windows\\Sysnative\\cmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/k C:\\Program Files^ (x86)\\Cmder\\vendor\\init.bat"
    ]
}

取自官方 Cmder wiki

路径中的空格

注意: Windows 中的命令行解释器路径中的空格存在一些问题,例如C:\Program Files (x86)\Cmder. 我们不建议将 Cmder 安装在包含空格的路径中。

相反,我们建议将 Cmder 安装在不包含任何空格的路径中,例如:C:\apps\CmderC:\tools\Cmder避免与 VS Code 发生任何冲突。

如果您出于某种原因确实需要从带有空格的路径启动 Cmder,您可能需要^在每个空格之前添加一个符号,这样您的文件中C:\\Example Directory for Test\\Cmder就会出现这样的符号。C:\\Example^ Directory^ for^ Test\\Cmdersettings.json

于 2019-01-26T01:01:47.303 回答
3

一个非常简单的解决方案(来源):

vscode.bat使用以下代码在您的 cmder 文件夹的根目录中创建一个文件。

@echo off
SET CMDER_ROOT=C:\cmder <--your path to cmder
"%CMDER_ROOT%\vendor\init.bat"

然后在您的 vscode 设置中将以下内容添加到您的settings.json

"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\cmd.exe",
 "terminal.integrated.shellArgs.windows": ["/K", "C:\\cmder\\vscode.bat"] <-- your path

您还可以通过评论输入和输出轻松地在cmd和之间切换。cmder"terminal.integrated.shellArgs.windows"

于 2019-07-05T10:27:58.703 回答
3

https://github.com/cmderdev/cmder/wiki/Seamless-VS-Code-Integration

 "terminal.integrated.shell.windows": "cmd.exe",

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

将 [cmder_root] 替换为您的 Cmder 安装目录。

第二种解决方案

"terminal.integrated.shell.windows": "C:\\Program Files\\cmder\\vendor\\git-for-windows\\bin\\bash.exe",
于 2019-05-08T07:38:23.580 回答
2

带有 VSCode 2021 的 Cmder

  • 第 1 步:下载 Cmder
  • 第 2 步:将 Cmder 保存到 C:\cmder
  • 第三步:在 VSCode 中打开 Settings.json
  • 第 4 步:创建 VSCode 集成终端设置
"terminal.integrated.profiles.windows": {
    "Cmder": {
      "path": "${env:windir}\\System32\\cmd.exe",
      "args": ["/k", "C:\\cmder\\vendor\\bin\\vscode_init.cmd"]
    }
  },
  "terminal.integrated.defaultProfile.windows": "Cmder",
  • 第五步:重启VSCode
  • 第 6 步:快乐编码!
于 2021-09-17T14:39:21.150 回答
2

这对我有用。我的 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 设置中。好好享受!

于 2018-03-12T05:46:06.643 回答
0

@Ari Maulana 就像一个魅力......

在变量上添加“CMDER_ROOT”并在您的 settings.json 中设置

"terminal.integrated.shell.windows": "C:\\Windows\\system32\\cmd.exe",
"terminal.integrated.shellArgs.windows": [
    "/k %CMDER_ROOT%\\vendor\\init.bat"
]
于 2020-03-31T23:53:41.610 回答
0

有两个扩展可以将 Cmder 包含到 VS Code 中,但无论如何它们都不能在 Win 7 中工作(我知道它已经很老了),而这里的一些答案对我的情况没有帮助。

地点详情:

cmd.exe = C:\Windows\System32\cmd.exe
I am using a portable version of Cmder in C:\cmder\Cmder.exe
init.bat = C:\cmder\vendor\init.bat
setting.json = C:\Users\Admin\AppData\Roaming\Code\User\settings.json

这是我的 settings.json

{
    "window.zoomLevel": 0,
    "terminal.integrated.shell.windows": "C:\\Windows\\System32\\cmd.exe",
    "terminal.integrated.shellArgs.windows": [
        "/k C:\\cmder\\vendor\\init.bat"
    ]
}

以及它正常工作的屏幕截图

Cmder 集成到 VS Code

注意:我不需要将 Cmder 添加到环境路径中

于 2020-06-20T07:39:30.380 回答
0

我找到的最佳解决方案:快速简单。

"terminal.external.windowsExec": "C:\\Utils\\Cmder\\Cmder.exe",
"terminal.integrated.shell.windows": "C:\\WINDOWS\\sysnative\\cmd.exe"
"terminal.integrated.shellArgs.windows" : ["/K","C:\\Utils\\cmder\\vendor\\init.bat"],
于 2019-07-29T14:00:51.103 回答
0

在视觉工作室按ctrl+p

写/去settings.json

把这个贴在里面

"terminal.integrated.profiles.windows": {
  "Cmder": {
    "path": "${env:windir}\\System32\\cmd.exe",
    "args": ["/k", "C:\\cmder\\vendor\\git-for-windows\\bin\\bash.exe"]
  }
},
"terminal.integrated.defaultProfile.windows": "Cmder",

确保"args"该目录是您在计算机中放置 cmder 的目录。

于 2021-11-18T15:21:14.047 回答
0

这个解决方案在开放终端上很好,但会破坏通过插件启动的 cmd 调用,参数包括 npm build - lint 等。

修复它的一个解决方案是创建一个自定义 init.bat 来包装这些调用并在 sellArgs 上引用它。

设置.json

"terminal.integrated.shell.windows": "cmd.exe",
"terminal.integrated.shellArgs.windows": [
    "/K C:\\SoftDev\\App\\Cmder\\vendor\\vstudio.bat"
],

C:\SoftDev\App\cmder\vendor\vstudio.bat

@echo off
if "%1" == "" (
    C:\SoftDev\App\cmder\vendor\init.bat
) else (
    cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
    exit
)
于 2019-08-09T10:12:38.593 回答
-1

Windows 中的命令行解释器在路径中存在一些空格问题,例如 C:\Program Files\Cmder 或 C:\Program Files (x86)\Cmder。相反,创建一个像“apps”这样的新文件夹并使用路径没有像 c:\apps 这样的空间

于 2020-02-20T17:24:12.427 回答