VS Code - Cygwin作为集成终端

use*_*296 21 windows git cygwin g++ visual-studio-code

我想在我的Windows笔记本电脑上使用Cygwin作为Visual Studio Code的集成终端(因为这会让我使用Linux终端命令git和G ++等)但是当我将值设置为 "terminal.integrated.shell.windows":Cygwin的地址时application(.exe)然后它打开一个新的Cygwin终端,而不是保留在VS Code中.

所以我的问题是:我可以使用Cygwin集成到VS代码终端并用它来使用就可以了命令(mkdir,rm在等),但也使用git命令并用它作为一个集成的编译和调试(对于一般性但C++最小)?我该怎么做呢?

小智 47

这些配置设置适合我:

{
  // start bash, not the mintty, or you'll get a new window
  "terminal.integrated.shell.windows": "C:\\cygwin\\bin\\bash.exe",
  // Use this to keep bash from doing a 'cd ${HOME}'
  "terminal.integrated.env.windows": {
    "CHERE_INVOKING": "1"
  },
  // Make it a login shell
  "terminal.integrated.shellArgs.windows": [
    "-l"
  ],
}
Run Code Online (Sandbox Code Playgroud)

  • 此外,对于 64 位 Cygwin 安装,路径可能是 `"C:\\cygwin64\\bin\\bash.exe"` (4认同)
  • 您要将这些设置添加到哪个文件? (4认同)
  • 我必须修复第二个参数的一些拼写错误:"terminal.integrated.env.windows":{"CHERE_INVOKING":"1"}, (3认同)
  • 你需要在`"terminal.integrated.env.windows"之后添加一个冒号 (3认同)
  • 有没有办法将它添加为额外的 shell 选项,以便您可以在创建新终端窗口时选择使用 cmd 或 bash? (2认同)

ton*_*ony 29

从 VS Code 1.55(2021 年 3 月)开始,您可以使用终端配置文件。

  1. 选择文件>首选项>设置
  2. 选择“打开设置 (JSON)”图标(右上角,与选项卡同一级别)
  3. 将以下代码复制并粘贴到顶级大括号 {} 内
  "terminal.integrated.profiles.windows": {
    "Cygwin": {
      "path": "C:\\cygwin\\bin\\bash.exe",
      "args": ["--login"],
      "env": {"CHERE_INVOKING": "1"}
    }
  }
Run Code Online (Sandbox Code Playgroud)

如果您有 64 位,您的 Cygwin 路径可能需要是:

        "path": "C:\\cygwin64\\bin\\bash.exe",
Run Code Online (Sandbox Code Playgroud)

打开 Cygwin 终端

  1. F1
  2. 类型:终端:创建新终端(带配置文件)
  3. 选择Cygwin

  • 在代码块之后,您只需添加: `"terminal.integrated.defaultProfile.windows": "Cygwin",` (4认同)

小智 13

结合以上答案,这是我的工作配置。

{
    "terminal.integrated.shell.windows": "C:\\cygwin\\bin\\bash.exe",
    "terminal.integrated.env.windows": {
        "CHERE_INVOKING": "1"
    },
    "terminal.integrated.shellArgs.windows": [
        "--login",
        "-i"
    ],
}
Run Code Online (Sandbox Code Playgroud)

{在 ubuntu 18.04lts 上测试,在 Virtualbox 5.2.12 中运行 Windows 7 Ultimate 32bt}

  • Bash 选项:`-i 强制 shell 交互运行`。`--login 使这个 shell 就像是直接被 login 调用一样。当 shell 是交互式的时,这相当于使用 'exec -l bash' 启动登录 shell。当 shell 不交互时,将执行登录 shell 启动文件。'exec bash -l' 或 'exec bash --login' 将用 Bash 登录 shell 替换当前 shell。` (3认同)
  • 对于 64 位 Cygwin,请记住将 Cygwin 与 cygwin64 放在一起,但除此之外,到目前为止这似乎有效。 (2认同)

Nic*_*sai 9

您可以调用Cygwin.bat无ENV问题:

{
    // Replace with your Cygwin.bat file path 
    "terminal.integrated.shell.windows": "C:\\cygwin64\\Cygwin.bat",
}
Run Code Online (Sandbox Code Playgroud)

确保BAT脚本适合您的Cygwin.


Tim*_*inn 7

VS Code 一次只允许您设置一个默认的终端配置,并且由于用户可能希望在任何时候都可以使用多个 shell,例如 CMD、Powershell 和 Cygwin Bash,最好使用名为的 Visual Studio Code 扩展壳牌发射器

此工具将允许您随时启动任意数量的 shell。首先,您需要将 CTRL-SHIFT-T 热键重新分配给 shellLauncher 或使用其他未使用的热键。

然后,进入 VS Code 的 settings.json 并添加以下块:

"shellLauncher.shells.windows": [
  {
    "shell": "C:\\Windows\\System32\\cmd.exe",
    "label": "cmd"
  },
  {
    "shell": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
    "label": "PowerShell"
  },
  {
    "shell": "C:\\cygwin\\bin\\bash.exe",
    "args": ["-l"],
    "env": {"CHERE_INVOKING": "1"},
    "label": "Cygwin Bash"
  }
],
Run Code Online (Sandbox Code Playgroud)

注意:根据需要更改上面的路径

现在,当您按下您分配的热键时,您将获得已配置的可用终端的下拉列表。


小智 5

对于 VS Code v1.60,采用以下方法:”

    "terminal.integrated.profiles.windows": {
      "Cygwin": {
        "source": "PowerShell",
        "args": ["C:\\cygwin\\cygwin.bat -i /Cygwin-Terminal.ico -"]
       }
     }
Run Code Online (Sandbox Code Playgroud)

缺点:打开的目录将是根文件夹。