解决更改系统环境变量后在vs code不生效的问题

尝试过的方法:

  • 重启电脑
  • 重启vs code
  • 点击设置,终端,windows 的settings.json配置http.proxy
  • 这些全部没有解决问题。

最终发现可以的两个方法

  1. 用管理员权限运行vs code(但是体验不好,有可能会弹出确认框,看你的设置)
  2. 通过在powershell 中输入code $PROFILE打开powershell配置文件并更改
  3. 通过更改.vscode/settings.json文件。输入以下内容(没有文件请自行创建)
  4. {
        "terminal.integrated.env.windows": {
            "http_proxy": "http://127.0.0.1:xxx",
            "https_proxy": "http://127.0.0.1:xxxx"
        }
    }
    
    

代理地址自行更改。改完之后重启vs code,再打开,生效了。

注意,Microsoft.PowerShell_profile.ps1这个文件的设置会覆盖.vscode/settings.json文件设置。

终于解决了这个玄学问题。如果有人可以告诉我原理,请不吝赐教。

后续:

原理大概是这样的。

vs code在打开一个终端时,配置执行顺序如下:

  1. 读取系统环境变量
  2. 读取用户的设置(vs code全局设置中的)settings.json
  3. 读取本工作区的设置settings.json
  4. 打开powershell(打开powershell之前,会读取 Microsoft.PowerShell_profile.ps1
    因此,全局settings.json变量值会被工作区settings.json覆盖,工作区的会被 Microsoft.PowerShell_profile.ps1覆盖。

ps:打开设置快捷键:ctrl+,

ps:工作区有两种模式,一种是文件夹模式,一种多文件夹模式。