在vscode中集成msys2终端

vscode是微软出品的代码编辑器。这个编辑器原生支持C、C++等语言的编译运行和调试,也可以通过插件实现其他语言的调试。它还有一个内置的终端功能,默认使用powershell。然而有些时候我们需要的是msys2这种类Linux环境而不是纯windows命令行。比如ESP-IDF就要求在msys2的环境下编译,cmd和powershell下均会报错。这种情况下就需要把vscode内置的终端替换成msys2。

正确配置msys2环境

根据安装文档,先配置msys2,使直接启动msys2后能成功编译程序,注意将环境变量设置写入/etc/profile中,不要修改~/.bashrc的内容。

配置msys2启动脚本

直接替换powershell为bash是不可行的,因为msys2启动时会运行/etc/profile这个脚本用来设置环境变量等配置,直接替换就会跳过这个配置文件,造成环境不完整,编译报错。而指定配置文件为/etc/profile后启动时会运行/etc/post-install/05-home-dir.post这个脚本,造成启动后目录切换到/home/xxx,而我们需要的是启动后仍然保持当前目录,所以我们需要对/etc/profile进行修改。
首先复制/etc/profile到/etc/profile_vscode,然后在profile_vscode中找到以下代码:

替换前
1
2
3
for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do
[ -e "${postinst}" ] && . "${postinst}"
done

将其替换为:
替换后
1
2
3
4
5
6
7
for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do
if [ -n "echo $postinst|grep home" ]
then
continue
fi
[ -e "${postinst}" ] && . "${postinst}"
done

修改vscode配置文件

在配置文件中添加以下代码:

配置文件
1
2
3
4
5
"terminal.integrated.shell.windows": "C:\\msys32\\usr\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--init-file",
"C:\\msys32\\etc\\profile_vscode"
],

注意根据具体msys2安装位置设置其中的参数。

最终效果

文章目录
  1. 1. 正确配置msys2环境
  2. 2. 配置msys2启动脚本
  3. 3. 修改vscode配置文件
  4. 4. 最终效果
|