VSCode 尝试将 Git Bash 设置为终端的默认配置文件时出现设置错误

VSCode error in settings when trying to set Git Bash as default profile for terminal

我尝试将Git Bash设置为VSCode中的默认终端,但我无法成功。我已尝试阅读下一篇文章:

但是他们没有解决我的问题。

我设法在 settings.json 中生成了配置文件,但是 Git Bash 出于某种我不知道的原因无法正常工作并且 VsCode 显示错误。

我的settings.json:

{
    "terminal.integrated.profiles.windows": {
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell"
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\Sysnative\cmd.exe",
                "${env:windir}\System32\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
        "Git Bash": {
            "source": "Git Bash",
            "path": "C:\git-sdk-64\git-bash.exe",
            "args": [
                "--login",
                "-i"
            ]
        },
        "Cygwin": {
            "path": "C:\cygwin64\bin\bash.exe",
            "args": [
                "--login"
            ]
        }
    },
    "terminal.integrated.defaultProfile.windows": "Git Bash"
}

错误:

有人知道如何解决这个问题吗?

我的VsCode版本:

Version: 1.57.1 (user setup)
Commit: 507ce72a4466fbb27b715c3722558bb15afa9f48
Date: 2021-06-17T13:28:07.755Z
Electron: 12.0.7
Chrome: 89.0.4389.128
Node.js: 14.16.0
V8: 8.9.255.25-electron.0
OS: Windows_NT x64 10.0.19042

编辑:

我使用 git SDK,它类似于 git-bash,但不完全相同。也许这就是问题所在?

这终于对我有用

"terminal.integrated.profiles.windows": {
        "PowerShell": {
            "source": "PowerShell",
            "icon": "terminal-powershell"
        },
        "Command Prompt": {
            "path": [
                "${env:windir}\Sysnative\cmd.exe",
                "${env:windir}\System32\cmd.exe"
            ],
            "args": [],
            "icon": "terminal-cmd"
        },
        "GitBash": {
            "path": ["C:\Program Files\Git\bin\bash.exe"],
            "args": [],
            "icon": "terminal-bash"
        }
    },
    "terminal.integrated.defaultProfile.windows": "GitBash"
}

我刚遇到同样的问题。而我的 VS Code 1.60.0 上的解决方案也是将 Git Bash 重命名为 GitBash.

在使用 Developer Tools 进行调试期间,我发现 VS Code 总是将对象值与相同键的默认值“合并”,因此:

  • 在 VS Code 中,Git Bash 键的默认值为 { source: "Git Bash" }
  • 我曾经写过{..., "Git Bash": { "path": "D:\Git\usr\bin\bash.exe", ... }}
  • 然后合并后的值为{..., "Git Bash": { "source": "Git Bash", "path": "...", ... }}
  • 在名为 showProfileQuickPick 的函数中,VS Code 调用 _detectProfiles
    • 此函数将 terminal.integrated.profiles.windowsterminal.integrated.defaultProfile.windows 的值发送到其 _primaryOffProcessTerminalService
    • profiles的值就是合并后的值
  • 因此,Git Bash 的对象不知何故“非法”,然后被忽略

相反,GitBash表示声明一个新的配置文件对象,所以它应该可以工作。