VS Code - Cygwin作为集成终端

时间:2017-09-05 19:16:06

标签: windows git g++ cygwin visual-studio-code

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

所以我的问题是:我可以将Cygwin集成到VS Code终端并使用它来使用命令(.exemkdir等),还可以使用git命令并使用它作为一个集成的编译器和调试器(至少对于C ++而言)?我该怎么做呢?

5 个答案:

答案 0 :(得分:40)

这些配置设置适用于我:

{
  // 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"
  ],
}

答案 1 :(得分:8)

你可以在没有ENV问题的情况下调用Cygwin.bat

{
    // Replace with your Cygwin.bat file path 
    "terminal.integrated.shell.windows": "C:\\cygwin64\\Cygwin.bat",
}

确保BAT脚本适合您的Cygwin。

答案 2 :(得分:5)

VS Code仅允许您一次设置一个默认的终端配置,并且由于用户可能希望同时使用多个Shell(如CMD,Powershell和Cygwin Bash),因此最好使用Visual Studio。代码扩展名为Shell Launcher

此工具将允许您随时启动任意数量的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"
  }
],

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

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

答案 3 :(得分:2)

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

import os
import cv2

directory = ''

for file in os.listdir(directory):
    img = cv2.imread(directory + file)
    horizontal_img = cv2.flip( img, 0 )

    #saving now
    cv2.imwrite(file + '_flip' + '.jpg', horizontal_img)

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

答案 4 :(得分:0)

如果您去掉以下部分,终端将在您打开的项目中启动。

// Make it a login shell
/*"terminal.integrated.shellArgs.windows": [
    "--login"
  "-l"
]*/,