记WSL 2.0网络模式导致的VS Code卡顿问题

记WSL 2.0网络模式导致的VS Code卡顿问题

在主系统下开启系统代理后启动WSL 2.0终端时,会提示

wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。

意思是说,此时主系统的代理在WSL中访问不了。这是因为WSL默认采用的网络模式(networking mode)是NAT(Network Address Translation)模式。在不考虑后面提到的问题的情况下,可以通过更改WSL设置来将代理映射到WSL。只需在开始菜单搜索“WSL Settings”即可更改。

![image-20250908222441472](./记WSL 2.0网络模式导致的VS Code卡顿问题.assets/image-20250908222441472.png)

选择Networking mode到Mirrored即可将代理映射到WSL中。

但这会带来巨大的副作用:此时VS Code无论是读还是写文件都会巨慢无比,自动补全和语法高亮也因此极其卡顿。我猜测这可能是与VS Code实际上是通过SSH“远程”访问WSL有关,但我不太懂网络,所以不清楚确切原因。

我的解决方式是回到NAT模式,然后手动进行代理。只需在~/.bashrc中添加以下几行:

# 获取Windows的网关IP(WSL 2的默认网关,即Windows的本地IP)
export WIN_IP=$(ip route | awk '/default/ {print $3}')

# 检查代理端口是否开启
if nc -z $WIN_IP 7897 -w 1; then
    export http_proxy="http://$WIN_IP:7897"
    export https_proxy="http://$WIN_IP:7897"
    git config --global http.proxy "http://$WIN_IP:7897"
    git config --global https.proxy "http://$WIN_IP:7897"
    echo "Proxy Port: 7897"
else
    unset http_proxy
    unset https_proxy
    unset all_proxy
    git config --global --unset http.proxy
    git config --global --unset https.proxy
    echo "Proxy Unset"
fi

就可以把git的代理设置到主系统的7890端口上了。

posted @ 2025-09-09 02:29  我就是蓬蒿人  阅读(81)  评论(0)    收藏  举报