Cookies Used! Some utilities (google analitics, adsense) on this site used cookies
为 VSCode 和 Windows Terminal 配置 MSYS2 命令行
不晓得各位的 VSCode 默认是用哪个终端,我是比较常用 MSYS2,所以一般也是用 MSYS2
作为默认终端,今天我们说下如何把 MSYS2 配置成 VSCode 的默认终端,
顺带也给 Windows Terminal 也添加 MSYS2 的终端
## 问题
其实是我今天把 MSYS2 迁移到了 scoop,然后就发现 VSCode 和 Terminal 找不到 MSYS2
了,这是正常的,因为安装路径变了么,一般 scoop 的程序都会安装在用户目录下,
而不是 c:\msys64。那我们就记录一下要改些什么,我们这次的主要变动,
其实就是修改了 MSYS2 的安装目录。
## VSCode
主要会有两个配置与我们本次的改动有关:
### 1. `"terminal.integrated.defaultProfile.windows"`
这个定义了 windows 系统下,VSCode 的默认终端,注意正常的情况下,
我们是不用修改的,但如果我们的 MSYS2 路径配置有问题,
而我们又配置了 MSYS2 为默认终端,VSCode 会提示我们这个配置有误。
### 2. `"terminal.integrated.profiles.windows"`
这个配置下面包含了集成在 VSCode 中所有的命令行,我简单列一下:
```json
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"args": [],
"icon": "terminal-cmd"
},
"MSYS2": {
"path": "c:\\users\\tricks1\\scoop\\apps\\msys2\\current\\msys2_shell.cmd",
"label": "MSYS2",
"icon": "terminal-bash",
"args": [
"-full-path",
"-defterm",
"-here",
"-no-start",
"-msys"
],
"env": {
"MSYSTEM": "MINGW64",
"CHERE_INVOKING": "1"
}
```
最关键的配置是路径(path),如果配置错误,或是对应路径下找不到文件,
VSCode 会认为这个命令行配置有误而丢弃,最直观的一个影响就是,
我们在设置第一个配置默认命令行时,设置为 MSYS2 后会提示没有这个配置。
一般 scoop 会在用户目录下建一个目录,用来保存通过 scoop 安装的应用,
所以我们按照上面的配置应该就可以正常启动,但是如果这段配置换了台不同用户的机器,
可能就又有问题了,所以我们可以做得更「优雅」一点,
把**用户路径**用**环境变量**隐藏:
```json
"MSYS2": {
"path": "${env:UserProfile}\\scoop\\apps\\msys2\\current\\msys2_shell.cmd",
"label": "MSYS2",
"icon": "terminal-bash",
"args": [
...
],
...
}
```
这样即使用户发生变化,我们也不用怕了。
## Windows Terminal
终端这边也可以入法炮制,只是要换个写法:
```json
"commandline": "%UserProfile%\\scoop\\apps\\msys2\\current\\msys2_shell.cmd -defterm -here -no-start -msys",
"guid": "{00000000-0000-0000-0000-000000000000}",
"icon": "%UserProfile%\\scoop\\apps\\msys2\\current\\msys2.ico",
"name": "MSYS / MSYS2",
"startingDirectory": "%UserProfile%\\scoop\\apps\\msys2\\current\\home\\%USERNAME%"
```
配置上直接配也可以:
![](https://raw.githubusercontent.com/t1hq/imghst/master/2024/202403061821899.png)
`${var}` 应该是 PowerShell 的格式,而 `%VAR%`的格式应该是 DOS/CMD 时代的产物,
两者都是微软的产品,说明这两个产品的开发团队还没有形成共识。😊
## 总结
我们回顾了下 MSYS2 从默认安装目录切换到 scoop 目录后,VSCode 和 Terminal 要更改
的配置,其实最关键只有一点要牢记,如果我们在 VSCode 中找不到我们配置的 MSYS2
命令行,那多半是我们配置有误,导致配置被 VSCode 丢掉了。