在Visual Studio代码中使用msys shell

aNe*_*New 5 shell mingw msys visual-studio-code

我正在进入Visual Studio Code,因为我喜欢它的轻量级设计和灵活性.它有一个集成的终端,我相信,任何shell都可以运行[见这里].我想用它来运行我最近一直在使用的msys shell.将终端设置为运行除默认powershell.exe之外的另一个shell应该像更改[here]中所述的设置一样简单.但是,我按照mingw.org上的建议运行msys.bat文件来使用msys shell.

所以我的问题是,我需要将终端设置为msys shell的.exe文件在哪里?或者以这种方式运行这个没有.bat的shell是不可能的?谢谢!

Sod*_*ris 16

根据MSYS终端,我们可以使用这个:

    "terminal.integrated.profiles.windows": {
        "msys mingw64": {
            "path": "C:/msys64/msys2_shell.cmd",
            "args": [
                "-defterm",
                "-here",
                "-no-start",
                "-mingw64"
            ]
        }
    },
Run Code Online (Sandbox Code Playgroud)

这将启动 msys mingw64。要启动其他 shell,只需更改-mingw64-mingw32-msys

  • 这个确实有效!谢谢你!只需将上面的代码片段添加到“.vscode/settings.json”中,或者打开命令面板 (cmd-shift-p) 并输入“打开设置 (JSON)”即可将其添加到系统/用户设置中。 (2认同)

Jon*_*ill 14

根据msys.bat脚本,启动的实际可执行文件取决于您的TTY设置.默认设置使用本机命令提示符并启动sh.exe文件,如以下代码段所示:

:startsh
if NOT EXIST %WD%sh.exe goto notfound
start %WD%sh --login -i
exit
Run Code Online (Sandbox Code Playgroud)

要在Visual Studio代码中使用此功能,您需要添加以下用户设置:

"terminal.integrated.shell.windows": "C:\\MinGW\\msys\\1.0\\bin\\sh.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
Run Code Online (Sandbox Code Playgroud)

sh.exe根据MSYS的安装位置,文件的路径可能会有所不同.

编辑:(2019-01-20)

虽然上面仍然适用于MSYS v1.0,但我已经切换到MSYS2(https://www.msys2.org/).您可以使用以下设置来设置Visual Studio代码以与MSYS2一样使用v1.0(再一次,您的安装位置可能与我的不同):

"terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
Run Code Online (Sandbox Code Playgroud)

对于额外信用,我们将修改环境变量,以便始终在当前目录中打开终端.有很多方法可以通过脚本等来实现这一点.但是,在我看来,最简单的方法是使用CHERE_INVOKING环境变量.通过设置此标志,1它将通知shell使用当前目录作为默认入口点.以下是有关如何启用此标志的完整教程:

  1. 按Windows键并键入run并按Enter 键
  2. 在运行对话框中,键入以下内容:

    rundll32.exe sysdm.cpl,EditEnvironmentVariables
    
    Run Code Online (Sandbox Code Playgroud)

    运行对话框以打开环境变量

  3. 在打开的"环境变量"对话框中,添加一个名为的新用户变量CHERE_INVOKING并将其值设置为1.

    在此输入图像描述

在Windows系统中启用此标志后,它应该从您调用bash.exe可执行文件的位置自动打开终端.对于Visual Studio Code,这将是您的根项目目录.请享用!


Bry*_*n K 5

对上一个答案的扩展:

为了让它打开到当前的工作目录,由于某种原因,它必须首先通过本机 shell 运行它。我们可以使用非常直观的PowerShell 包装器来设置 cd 和启动bash或其他 shell。

这是让它为我工作的配置:

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
"terminal.integrated.shellArgs.windows": [
    "C:\\msys64\\usr\\bin\\sh.exe",
    "--login",
    "-i",
    "-c",
    "(\"cd \\`\"``cygpath '{0}'``\\`\"; /usr/bin/bash --login -i\" -f (Resolve-Path .).Path )"
],
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以替换bash为不同的 shell,例如zsh.

Bash 和 JSON 转义使用该\字符,但 PowerShell 使用`该字符,然后 bash 将尝试使用该字符来执行命令,因此请小心所有转义字符。

此外,您必须指定 PowerShell 二进制文件,而不是内置"PowerShell"shell。老实说我不知道​​为什么。