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。
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使用当前目录作为默认入口点.以下是有关如何启用此标志的完整教程:
run并按Enter 键在运行对话框中,键入以下内容:
rundll32.exe sysdm.cpl,EditEnvironmentVariables
Run Code Online (Sandbox Code Playgroud)
在打开的"环境变量"对话框中,添加一个名为的新用户变量CHERE_INVOKING并将其值设置为1.
在Windows系统中启用此标志后,它应该从您调用bash.exe可执行文件的位置自动打开终端.对于Visual Studio Code,这将是您的根项目目录.请享用!
对上一个答案的扩展:
为了让它打开到当前的工作目录,由于某种原因,它必须首先通过本机 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。老实说我不知道为什么。
| 归档时间: |
|
| 查看次数: |
5338 次 |
| 最近记录: |