作为一个在 macOS 上开发多年的前端开发者,最近决定尝试 Windows 作为主力开发机。本文详细记录了整个迁移过程和我常用的配置、软件,希望能给同样需要的朋友一些参考。
Windows 原生的开发体验一直被诟病,我从换到 windows 后也确实发现了一些问题。
本来我打算直接使用 WSL2 ,不想让公司的 vpn 软件在系统里随便拉屎。 但是没解决如何把这个软件安装进 debian 里这个问题,所以最后还是破罐子破摔,都装 windows 去了。
刚开始,pwsh 配上oh-my-pwsh之后视觉上效果还是可以的。
但是自带终端、vscode终端、vscode项目内的一些脚本比如 husky,环境竟然都不一致,很无语。 哪怕配好了node环境,husky 里的 precommit 也没法正常使用 node 命令。
并且后面在各种项目里大量尝试 opencode + oh-my-opencode (omo),发现内存占用特别高,开的窗口多了就会崩溃。(换了wsl + ubuntu 后改善很多)
于是找了个时间,把系统整个重装了。
以下就是我整个wsl/ubuntu/开发环境/软件等配置的分享。
Windows 11 或 Windows 10 2004+ 直接一条命令:wsl --install
会自动完成:启用 WSL 功能、安装 Linux 内核、设置 WSL2 为默认、安装 Ubuntu。
重启电脑即可使用。
如果一键安装不可用,需要手动:
- 启用 WSL 和虚拟机平台功能(以管理员身份运行 PowerShell,使用
dism.exe命令) - 设置 WSL2 为默认版本(Windows 11 通常已默认)
- 安装 Ubuntu 22.04:
wsl --install -d Ubuntu-22.04 - 验证:
wsl --list --verbose
WSL 默认装 C 盘,空间不够可以迁移。我的迁移流程是:
- 关闭 WSL:
wsl --shutdown - 导出备份:
wsl --export Ubuntu-22.04 D:\wsl-backup\ubuntu-22.04.tar - 注销原实例:
wsl --unregister Ubuntu-22.04 - 创建新目录:
mkdir D:\WSL\Ubuntu-22.04 - 导入到新位置:
wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\wsl-backup\ubuntu-22.04.tar - 设置默认用户:
ubuntu2204.exe config --default-user your_username
迁移结果:从 C 盘迁到 D 盘,拥有近 1TB 可用空间。
创建 /etc/wsl.conf 文件,启用 systemd 和镜像网络模式:
[boot]中设置systemd=true→ 可以使用systemctl管理服务[network]中设置networkingMode=mirrored→ WSL 和 Windows 共享 IP,性能更好
提示:Windows 开始菜单搜索 "wsl settings" 可以可视化配置
修改后需要重启 WSL:wsl --shutdown
我使用 Clash for Windows(开系统代理、不开 TUN 模式),在 .zshrc 中设置代理环境变量:
export HTTP_PROXY="http://127.0.0.1:7890"export HTTPS_PROXY="http://127.0.0.1:7890"export ALL_PROXY="socks5://127.0.0.1:7890"
由于使用镜像网络模式,WSL 可以直接通过 127.0.0.1 访问 Windows 的代理端口。
我的策略:全局工具用 Bun,Node 版本管理用 fnm,项目依赖用 pnpm
- Bun:全局工具速度快、性能好
- fnm:轻量级版本管理器,比 nvm 快,支持
.node-version和.nvmrc自动切换 - pnpm:项目依赖管理
Bun 安装:curl -fsSL https://bun.sh/install | bash
fnm 安装:curl -fsSL https://fnm.vercel.app/install | bash
- 配置自动切换:
eval "$(fnm env --use-on-cd)" - 安装 Node:
fnm install 22 && fnm use 22 && fnm default 22
pnpm 安装:bun install -g pnpm
我的版本:fnm 1.38.1、Node 22.21.1、Bun 1.3.7、pnpm 10.11.0
# 全局工具用 Bun 安装
bun install -g typescript tsx vite pm2
# 项目开发时
fnm use # 自动切换 Node 版本
pnpm install # 安装依赖
pnpm dev # 启动开发服务器
- Zsh:
sudo apt install zsh -y,设为默认:chsh -s $(which zsh) - Oh My Zsh:官方安装脚本
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" - Powerlevel10k 主题:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k - 必装插件:
- zsh-autosuggestions:
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions - zsh-syntax-highlighting:
sudo apt install zsh-syntax-highlighting或 git clone
- zsh-autosuggestions:
在 ~/.zshrc 中:
- 主题:
ZSH_THEME="powerlevel10k/powerlevel10k" - 插件:
plugins=(git zsh-autosuggestions zsh-syntax-highlighting z extract) - 代理(默认启用):
也可以保留一个 unproxy 函数用于清除代理
export HTTP_PROXY="http://127.0.0.1:7890" export HTTPS_PROXY="http://127.0.0.1:7890" export ALL_PROXY="socks5://127.0.0.1:7890" - fnm 自动切换 Node 版本:
eval "$(fnm env --use-on-cd)"
Powerlevel10k 需要 Nerd Fonts。推荐 MesloLGS NF,下载地址:https://www.nerdfonts.com/font-downloads
在 Windows Terminal 中设置:设置 → Ubuntu-22.04 → 外观 → 字体 → 选择 MesloLGS NF
必装扩展:Remote - WSL(在 WSL 端安装其他扩展)
常用扩展(在 WSL 端):
- ESLint、Prettier:代码检查和格式化
- Vue(Official):Vue 3 开发
- Tailwind CSS IntelliSense:类名提示
- GitLens:Git 增强
# 在当前目录打开
code .
# 打开指定目录
code ~/projects/my-project
首次运行会自动在 WSL 中安装 VSCode Server。
- 启用保存时格式化和 ESLint 自动修复
- 设置 Zsh 为默认终端
- 排除不必要的文件监控(node_modules、.nuxt、.next、dist)
- 项目放在 WSL 文件系统
~/projects/,不要放/mnt/c/(很慢) - Windows Defender 排除 WSL 目录:
Add-MpPreference -ExclusionPath "D:\WSL"
OpenCode 是一个强大的 AI 辅助编程工具,支持多种模型和自定义 agent。
使用 oh-my-opencode 可以一键安装并自动配置:
- 安装命令:
bunx ohmyopencode@latest install - 按照提示选择模型和配置即可
一开始 windows 上我用的是 utools,轻度使用,我知道里面有很多插件,但是打开速度真心不快。 而仅仅作为软件启动器来用,因为我喜欢把桌面上的图标都删掉,露出整个壁纸。
重装完之后,和群里的小伙伴交流了之下,才发现 Raycast 有 windows 版本,于是尝试了一下,体验上比 windows 强的多。
比如,我会在搜索框内简单算个数,能可以直接打开 web search,其他就是启动软件了,刚注册是可以体验AI功能的,不过我完全用不上。
微信输入法本身输入法相关的功能其实是不如搜狗的,可能也不如别的。 但是它生的好,生态就好。经过和其他设备配对之后,可以很方便的多端文本、图片复制。带有文本剪贴板历史,按v键激活,也能省下一个单独的剪贴板软件。
手机端的微信输入法还自带排版成图,类似发小红书的时候把短标题弄个简单背景再发出去。前一阵我用来给文章配封面,但是现在我有自己的IMGX了,也不太需要了。
截图工具一般都要有一个,这个是开源的。我想我还在用它的唯一原因就是我还没来得及用AI复刻一个截图工具吧。
本来我在 macos 上使用 Obsidian 的,但是我用 AI 又给自己写了一个编辑器。并且集成常用的软件,自己常用的工作流。只会越用越顺手。
这个工具基于 Tauri2 + Nuxt4,多端一致,目前每次都会打包 macos/安卓/exe 这三个平台的包,对应我在公司使用 windows,在家使用 macos,手上拿的安卓手机。
目前我内置了图床功能,可以直接上传到腾讯云对象存储,所以我卸载了PicGo (感谢PicGo的陪伴)。
在我用zotepad写文章时,可以直接打开侧边栏选择已经上传的图片插入,感觉方便多了。
markdown编辑器选的 milkdown,所见即所得模式。 复制样式到公众号,这个功能在我博客站上就有,也挪过来了。并且用博客站做了公众号接口的转发,可以直接在编辑器内点击发送到公众号草稿箱。支持文章和图文两种模式。发送完再去手机端的公众号助手审一遍就可以发布了。
我主要拿它来运行Ngxin、Mysal、Redis、PGSQL,是作为不能用Docker Desktop时的替代品。
WSL 是最好的 Linux 发行版,Windows 是最好的 Linux 桌面
这话说的没毛病。
重点是所有开发环境、代码都在 Ubuntu 里,下次换另一台电脑就和从c盘迁移到别的盘一样,直接把整个打包出来就可以了,十分方便。
而且可以随意安装多个linux环境,可以实验各种配置,玩坏了直接删除重建。比当年自己装双系统啥的省事多了。
好了分享结束,有问题欢迎评论群交流。