[{"data":1,"prerenderedAt":893},["ShallowReactive",2],{"page-/post/tech-tips/migrate-macos-to-windows-wsl":3,"surrounding-page":884},{"id":4,"title":5,"author":6,"body":7,"date":871,"description":341,"extension":872,"group":6,"lastmod":873,"meta":874,"navigation":385,"path":875,"rawbody":876,"seo":877,"showTitle":6,"stem":878,"tags":879,"versions":6,"__hash__":883},"content/post/tech-tips/migrate-macos-to-windows-wsl.md","从 macOS 迁移到 Windows 开发环境",null,{"type":8,"value":9,"toc":833},"minimark",[10,18,21,26,29,32,44,47,50,53,56,60,65,71,74,77,80,83,109,113,116,154,161,165,169,176,202,208,213,216,223,240,247,250,253,259,287,290,299,307,321,329,332,335,425,429,432,484,487,496,563,567,580,583,587,590,596,602,616,620,653,656,659,690,694,697,700,703,714,717,721,728,731,738,741,752,761,765,768,772,775,778,785,788,795,799,806,809,814,817,820,823,826,829],[11,12,13],"p",{},[14,15],"img",{"alt":16,"src":17},"1.00","https://imgx.zzao.club/api/103/%E4%BB%8E*MacOS*%E8%BF%81%E7%A7%BB%E5%88%B0*Windows*?scale=2",[11,19,20],{},"作为一个在 macOS 上开发多年的前端开发者，最近决定尝试 Windows 作为主力开发机。本文详细记录了整个迁移过程和我常用的配置、软件，希望能给同样需要的朋友一些参考。",[22,23,25],"h2",{"id":24},"windows-开发体验","windows 开发体验",[11,27,28],{},"Windows 原生的开发体验一直被诟病，我从换到 windows 后也确实发现了一些问题。",[11,30,31],{},"本来我打算直接使用 WSL2 ，不想让公司的 vpn 软件在系统里随便拉屎。 但是没解决如何把这个软件安装进 debian 里这个问题，所以最后还是破罐子破摔，都装 windows 去了。",[11,33,34,35,39,40,43],{},"刚开始，",[36,37,38],"code",{},"pwsh"," 配上",[36,41,42],{},"oh-my-pwsh","之后视觉上效果还是可以的。",[11,45,46],{},"但是自带终端、vscode终端、vscode项目内的一些脚本比如 husky，环境竟然都不一致，很无语。 哪怕配好了node环境，husky 里的 precommit 也没法正常使用 node 命令。",[11,48,49],{},"并且后面在各种项目里大量尝试 opencode + oh-my-opencode (omo)，发现内存占用特别高，开的窗口多了就会崩溃。（换了wsl + ubuntu 后改善很多）",[11,51,52],{},"于是找了个时间，把系统整个重装了。",[11,54,55],{},"以下就是我整个wsl/ubuntu/开发环境/软件等配置的分享。",[22,57,59],{"id":58},"wsl-安装过程","WSL 安装过程",[61,62,64],"h3",{"id":63},"一键安装推荐","一键安装（推荐）",[11,66,67,68],{},"Windows 11 或 Windows 10 2004+ 直接一条命令：",[36,69,70],{},"wsl --install",[11,72,73],{},"会自动完成：启用 WSL 功能、安装 Linux 内核、设置 WSL2 为默认、安装 Ubuntu。",[11,75,76],{},"重启电脑即可使用。",[61,78,79],{"id":79},"手动安装",[11,81,82],{},"如果一键安装不可用，需要手动：",[84,85,86,94,97,103],"ol",{},[87,88,89,90,93],"li",{},"启用 WSL 和虚拟机平台功能（以管理员身份运行 PowerShell，使用 ",[36,91,92],{},"dism.exe"," 命令）",[87,95,96],{},"设置 WSL2 为默认版本（Windows 11 通常已默认）",[87,98,99,100],{},"安装 Ubuntu 22.04：",[36,101,102],{},"wsl --install -d Ubuntu-22.04",[87,104,105,106],{},"验证：",[36,107,108],{},"wsl --list --verbose",[22,110,112],{"id":111},"wsl-磁盘迁移从-c-盘到其他盘","WSL 磁盘迁移：从 C 盘到其他盘",[11,114,115],{},"WSL 默认装 C 盘，空间不够可以迁移。我的迁移流程是：",[84,117,118,124,130,136,142,148],{},[87,119,120,121],{},"关闭 WSL：",[36,122,123],{},"wsl --shutdown",[87,125,126,127],{},"导出备份：",[36,128,129],{},"wsl --export Ubuntu-22.04 D:\\wsl-backup\\ubuntu-22.04.tar",[87,131,132,133],{},"注销原实例：",[36,134,135],{},"wsl --unregister Ubuntu-22.04",[87,137,138,139],{},"创建新目录：",[36,140,141],{},"mkdir D:\\WSL\\Ubuntu-22.04",[87,143,144,145],{},"导入到新位置：",[36,146,147],{},"wsl --import Ubuntu-22.04 D:\\WSL\\Ubuntu-22.04 D:\\wsl-backup\\ubuntu-22.04.tar",[87,149,150,151],{},"设置默认用户：",[36,152,153],{},"ubuntu2204.exe config --default-user your_username",[11,155,156,160],{},[157,158,159],"strong",{},"迁移结果","：从 C 盘迁到 D 盘，拥有近 1TB 可用空间。",[22,162,164],{"id":163},"wsl-ubuntu-核心配置","WSL + Ubuntu 核心配置",[61,166,168],{"id":167},"etcwslconf-配置","/etc/wsl.conf 配置",[11,170,171,172,175],{},"创建 ",[36,173,174],{},"/etc/wsl.conf"," 文件，启用 systemd 和镜像网络模式：",[177,178,179,193],"ul",{},[87,180,181,184,185,188,189,192],{},[36,182,183],{},"[boot]"," 中设置 ",[36,186,187],{},"systemd=true"," → 可以使用 ",[36,190,191],{},"systemctl"," 管理服务",[87,194,195,184,198,201],{},[36,196,197],{},"[network]",[36,199,200],{},"networkingMode=mirrored"," → WSL 和 Windows 共享 IP，性能更好",[203,204,205],"blockquote",{},[11,206,207],{},"提示：Windows 开始菜单搜索 \"wsl settings\" 可以可视化配置",[11,209,210,211],{},"修改后需要重启 WSL：",[36,212,123],{},[61,214,215],{"id":215},"代理配置",[11,217,218,219,222],{},"我使用 Clash for Windows（开系统代理、不开 TUN 模式），在 ",[36,220,221],{},".zshrc"," 中设置代理环境变量：",[177,224,225,230,235],{},[87,226,227],{},[36,228,229],{},"export HTTP_PROXY=\"http://127.0.0.1:7890\"",[87,231,232],{},[36,233,234],{},"export HTTPS_PROXY=\"http://127.0.0.1:7890\"",[87,236,237],{},[36,238,239],{},"export ALL_PROXY=\"socks5://127.0.0.1:7890\"",[11,241,242,243,246],{},"由于使用镜像网络模式，WSL 可以直接通过 ",[36,244,245],{},"127.0.0.1"," 访问 Windows 的代理端口。",[22,248,249],{"id":249},"前端开发环境配置",[61,251,252],{"id":252},"包管理器策略",[11,254,255,256],{},"我的策略：",[157,257,258],{},"全局工具用 Bun，Node 版本管理用 fnm，项目依赖用 pnpm",[177,260,261,267,281],{},[87,262,263,266],{},[157,264,265],{},"Bun","：全局工具速度快、性能好",[87,268,269,272,273,276,277,280],{},[157,270,271],{},"fnm","：轻量级版本管理器，比 nvm 快，支持 ",[36,274,275],{},".node-version"," 和 ",[36,278,279],{},".nvmrc"," 自动切换",[87,282,283,286],{},[157,284,285],{},"pnpm","：项目依赖管理",[61,288,289],{"id":289},"安装与版本",[11,291,292,295,296],{},[157,293,294],{},"Bun 安装","：",[36,297,298],{},"curl -fsSL https://bun.sh/install | bash",[11,300,301,295,304],{},[157,302,303],{},"fnm 安装",[36,305,306],{},"curl -fsSL https://fnm.vercel.app/install | bash",[177,308,309,315],{},[87,310,311,312],{},"配置自动切换：",[36,313,314],{},"eval \"$(fnm env --use-on-cd)\"",[87,316,317,318],{},"安装 Node：",[36,319,320],{},"fnm install 22 && fnm use 22 && fnm default 22",[11,322,323,295,326],{},[157,324,325],{},"pnpm 安装",[36,327,328],{},"bun install -g pnpm",[11,330,331],{},"我的版本：fnm 1.38.1、Node 22.21.1、Bun 1.3.7、pnpm 10.11.0",[61,333,334],{"id":334},"实际使用",[336,337,342],"pre",{"className":338,"code":339,"language":340,"meta":341,"style":341},"language-bash shiki shiki-themes github-light","# 全局工具用 Bun 安装\nbun install -g typescript tsx vite pm2\n\n# 项目开发时\nfnm use                 # 自动切换 Node 版本\npnpm install           # 安装依赖\npnpm dev               # 启动开发服务器\n","bash","",[36,343,344,353,380,387,393,404,414],{"__ignoreMap":341},[345,346,349],"span",{"class":347,"line":348},"line",1,[345,350,352],{"class":351},"sAwPA","# 全局工具用 Bun 安装\n",[345,354,356,360,364,368,371,374,377],{"class":347,"line":355},2,[345,357,359],{"class":358},"s7eDp","bun",[345,361,363],{"class":362},"sYBdl"," install",[345,365,367],{"class":366},"sYu0t"," -g",[345,369,370],{"class":362}," typescript",[345,372,373],{"class":362}," tsx",[345,375,376],{"class":362}," vite",[345,378,379],{"class":362}," pm2\n",[345,381,383],{"class":347,"line":382},3,[345,384,386],{"emptyLinePlaceholder":385},true,"\n",[345,388,390],{"class":347,"line":389},4,[345,391,392],{"class":351},"# 项目开发时\n",[345,394,396,398,401],{"class":347,"line":395},5,[345,397,271],{"class":358},[345,399,400],{"class":362}," use",[345,402,403],{"class":351},"                 # 自动切换 Node 版本\n",[345,405,407,409,411],{"class":347,"line":406},6,[345,408,285],{"class":358},[345,410,363],{"class":362},[345,412,413],{"class":351},"           # 安装依赖\n",[345,415,417,419,422],{"class":347,"line":416},7,[345,418,285],{"class":358},[345,420,421],{"class":362}," dev",[345,423,424],{"class":351},"               # 启动开发服务器\n",[22,426,428],{"id":427},"zsh-oh-my-zsh-配置","Zsh + Oh My Zsh 配置",[61,430,431],{"id":431},"安装",[84,433,434,446,455,463],{},[87,435,436,295,439,442,443],{},[157,437,438],{},"Zsh",[36,440,441],{},"sudo apt install zsh -y","，设为默认：",[36,444,445],{},"chsh -s $(which zsh)",[87,447,448,451,452],{},[157,449,450],{},"Oh My Zsh","：官方安装脚本 ",[36,453,454],{},"sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"",[87,456,457,295,460],{},[157,458,459],{},"Powerlevel10k 主题",[36,461,462],{},"git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k",[87,464,465,468,469],{},[157,466,467],{},"必装插件","：\n",[177,470,471,477],{},[87,472,473,474],{},"zsh-autosuggestions：",[36,475,476],{},"git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions",[87,478,479,480,483],{},"zsh-syntax-highlighting：",[36,481,482],{},"sudo apt install zsh-syntax-highlighting"," 或 git clone",[61,485,486],{"id":486},"我的配置",[11,488,489,295],{},[157,490,491,492,495],{},"在 ",[36,493,494],{},"~/.zshrc"," 中",[177,497,498,504,510,558],{},[87,499,500,501],{},"主题：",[36,502,503],{},"ZSH_THEME=\"powerlevel10k/powerlevel10k\"",[87,505,506,507],{},"插件：",[36,508,509],{},"plugins=(git zsh-autosuggestions zsh-syntax-highlighting z extract)",[87,511,512,513,557],{},"代理（默认启用）：\n",[336,514,516],{"className":338,"code":515,"language":340,"meta":341,"style":341},"export HTTP_PROXY=\"http://127.0.0.1:7890\"\nexport HTTPS_PROXY=\"http://127.0.0.1:7890\"\nexport ALL_PROXY=\"socks5://127.0.0.1:7890\"\n",[36,517,518,534,545],{"__ignoreMap":341},[345,519,520,524,528,531],{"class":347,"line":348},[345,521,523],{"class":522},"sD7c4","export",[345,525,527],{"class":526},"sgsFI"," HTTP_PROXY",[345,529,530],{"class":522},"=",[345,532,533],{"class":362},"\"http://127.0.0.1:7890\"\n",[345,535,536,538,541,543],{"class":347,"line":355},[345,537,523],{"class":522},[345,539,540],{"class":526}," HTTPS_PROXY",[345,542,530],{"class":522},[345,544,533],{"class":362},[345,546,547,549,552,554],{"class":347,"line":382},[345,548,523],{"class":522},[345,550,551],{"class":526}," ALL_PROXY",[345,553,530],{"class":522},[345,555,556],{"class":362},"\"socks5://127.0.0.1:7890\"\n","\n也可以保留一个 unproxy 函数用于清除代理",[87,559,560,561],{},"fnm 自动切换 Node 版本：",[36,562,314],{},[61,564,566],{"id":565},"字体设置重要","字体设置（重要）",[11,568,569,570,573,574],{},"Powerlevel10k 需要 Nerd Fonts。推荐 ",[157,571,572],{},"MesloLGS NF","，下载地址：",[575,576,577],"a",{"href":577,"rel":578},"https://www.nerdfonts.com/font-downloads",[579],"nofollow",[11,581,582],{},"在 Windows Terminal 中设置：设置 → Ubuntu-22.04 → 外观 → 字体 → 选择 MesloLGS NF",[22,584,586],{"id":585},"wsl-vscode-开发配置","WSL + VSCode 开发配置",[61,588,589],{"id":589},"核心要点",[11,591,592,595],{},[157,593,594],{},"必装扩展","：Remote - WSL（在 WSL 端安装其他扩展）",[11,597,598,601],{},[157,599,600],{},"常用扩展","（在 WSL 端）：",[177,603,604,607,610,613],{},[87,605,606],{},"ESLint、Prettier：代码检查和格式化",[87,608,609],{},"Vue(Official)：Vue 3 开发",[87,611,612],{},"Tailwind CSS IntelliSense：类名提示",[87,614,615],{},"GitLens：Git 增强",[61,617,619],{"id":618},"从-wsl-启动-vscode","从 WSL 启动 VSCode",[336,621,623],{"className":338,"code":622,"language":340,"meta":341,"style":341},"# 在当前目录打开\ncode .\n\n# 打开指定目录\ncode ~/projects/my-project\n",[36,624,625,630,637,641,646],{"__ignoreMap":341},[345,626,627],{"class":347,"line":348},[345,628,629],{"class":351},"# 在当前目录打开\n",[345,631,632,634],{"class":347,"line":355},[345,633,36],{"class":358},[345,635,636],{"class":362}," .\n",[345,638,639],{"class":347,"line":382},[345,640,386],{"emptyLinePlaceholder":385},[345,642,643],{"class":347,"line":389},[345,644,645],{"class":351},"# 打开指定目录\n",[345,647,648,650],{"class":347,"line":395},[345,649,36],{"class":358},[345,651,652],{"class":362}," ~/projects/my-project\n",[11,654,655],{},"首次运行会自动在 WSL 中安装 VSCode Server。",[61,657,658],{"id":658},"配置要点",[177,660,661,664,667,670,684],{},[87,662,663],{},"启用保存时格式化和 ESLint 自动修复",[87,665,666],{},"设置 Zsh 为默认终端",[87,668,669],{},"排除不必要的文件监控（node_modules、.nuxt、.next、dist）",[87,671,672,675,676,679,680,683],{},[157,673,674],{},"项目放在 WSL 文件系统"," ",[36,677,678],{},"~/projects/","，不要放 ",[36,681,682],{},"/mnt/c/","（很慢）",[87,685,686,687],{},"Windows Defender 排除 WSL 目录：",[36,688,689],{},"Add-MpPreference -ExclusionPath \"D:\\WSL\"",[22,691,693],{"id":692},"opencode-配置","OpenCode 配置",[11,695,696],{},"OpenCode 是一个强大的 AI 辅助编程工具，支持多种模型和自定义 agent。",[61,698,699],{"id":699},"安装与配置",[11,701,702],{},"使用 oh-my-opencode 可以一键安装并自动配置：",[177,704,705,711],{},[87,706,707,708],{},"安装命令：",[36,709,710],{},"bunx ohmyopencode@latest install",[87,712,713],{},"按照提示选择模型和配置即可",[22,715,716],{"id":716},"常用软件",[61,718,720],{"id":719},"raycast-软件启动器","Raycast (软件启动器)",[11,722,723,724,727],{},"一开始 windows 上我用的是 ",[36,725,726],{},"utools","，轻度使用，我知道里面有很多插件，但是打开速度真心不快。 而仅仅作为软件启动器来用，因为我喜欢把桌面上的图标都删掉，露出整个壁纸。",[11,729,730],{},"重装完之后，和群里的小伙伴交流了之下，才发现 Raycast 有 windows 版本，于是尝试了一下，体验上比 windows 强的多。",[11,732,733,734,737],{},"比如，我会在搜索框内简单算个数，能可以直接打开 ",[36,735,736],{},"web search","，其他就是启动软件了，刚注册是可以体验AI功能的，不过我完全用不上。",[61,739,740],{"id":740},"微信输入法",[11,742,743,744,747,748,751],{},"微信输入法本身输入法相关的功能其实是不如搜狗的，可能也不如别的。 但是它生的好，生态就好。经过和其他设备配对之后，可以很方便的",[157,745,746],{},"多端文本、图片复制","。带有文本剪贴板历史，按",[36,749,750],{},"v","键激活，也能省下一个单独的剪贴板软件。",[11,753,754,755,760],{},"手机端的微信输入法还自带排版成图，类似发小红书的时候把短标题弄个简单背景再发出去。前一阵我用来给文章配封面，但是现在我有自己的",[575,756,759],{"href":757,"rel":758},"https://imgx.zzao.club",[579],"IMGX","了，也不太需要了。",[61,762,764],{"id":763},"pixpin-截图工具","PixPin 截图工具",[11,766,767],{},"截图工具一般都要有一个，这个是开源的。我想我还在用它的唯一原因就是我还没来得及用AI复刻一个截图工具吧。",[61,769,771],{"id":770},"zotepad-文章编辑器发布工具","Zotepad 文章编辑器/发布工具",[11,773,774],{},"本来我在 macos 上使用 Obsidian 的，但是我用 AI 又给自己写了一个编辑器。并且集成常用的软件，自己常用的工作流。只会越用越顺手。",[11,776,777],{},"这个工具基于 Tauri2 + Nuxt4，多端一致，目前每次都会打包 macos/安卓/exe 这三个平台的包，对应我在公司使用 windows，在家使用 macos，手上拿的安卓手机。",[11,779,780,781,784],{},"目前我内置了",[157,782,783],{},"图床功能","，可以直接上传到腾讯云对象存储，所以我卸载了PicGo (感谢PicGo的陪伴)。",[11,786,787],{},"在我用zotepad写文章时，可以直接打开侧边栏选择已经上传的图片插入，感觉方便多了。",[11,789,790,791,794],{},"markdown编辑器选的 ",[36,792,793],{},"milkdown","，所见即所得模式。 复制样式到公众号，这个功能在我博客站上就有，也挪过来了。并且用博客站做了公众号接口的转发，可以直接在编辑器内点击发送到公众号草稿箱。支持文章和图文两种模式。发送完再去手机端的公众号助手审一遍就可以发布了。",[61,796,798],{"id":797},"flyenv","Flyenv",[11,800,801,802,805],{},"我主要拿它来运行Ngxin、Mysal、Redis、PGSQL，是作为不能用",[36,803,804],{},"Docker Desktop","时的替代品。",[22,807,808],{"id":808},"使用感受",[11,810,811],{},[157,812,813],{},"WSL 是最好的 Linux 发行版，Windows 是最好的 Linux 桌面",[11,815,816],{},"这话说的没毛病。",[11,818,819],{},"重点是所有开发环境、代码都在 Ubuntu 里，下次换另一台电脑就和从c盘迁移到别的盘一样，直接把整个打包出来就可以了，十分方便。",[11,821,822],{},"而且可以随意安装多个linux环境，可以实验各种配置，玩坏了直接删除重建。比当年自己装双系统啥的省事多了。",[824,825],"hr",{},[11,827,828],{},"好了分享结束，有问题欢迎评论群交流。",[830,831,832],"style",{},"html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}",{"title":341,"searchDepth":355,"depth":355,"links":834},[835,836,840,841,845,850,855,860,863,870],{"id":24,"depth":355,"text":25},{"id":58,"depth":355,"text":59,"children":837},[838,839],{"id":63,"depth":382,"text":64},{"id":79,"depth":382,"text":79},{"id":111,"depth":355,"text":112},{"id":163,"depth":355,"text":164,"children":842},[843,844],{"id":167,"depth":382,"text":168},{"id":215,"depth":382,"text":215},{"id":249,"depth":355,"text":249,"children":846},[847,848,849],{"id":252,"depth":382,"text":252},{"id":289,"depth":382,"text":289},{"id":334,"depth":382,"text":334},{"id":427,"depth":355,"text":428,"children":851},[852,853,854],{"id":431,"depth":382,"text":431},{"id":486,"depth":382,"text":486},{"id":565,"depth":382,"text":566},{"id":585,"depth":355,"text":586,"children":856},[857,858,859],{"id":589,"depth":382,"text":589},{"id":618,"depth":382,"text":619},{"id":658,"depth":382,"text":658},{"id":692,"depth":355,"text":693,"children":861},[862],{"id":699,"depth":382,"text":699},{"id":716,"depth":355,"text":716,"children":864},[865,866,867,868,869],{"id":719,"depth":382,"text":720},{"id":740,"depth":382,"text":740},{"id":763,"depth":382,"text":764},{"id":770,"depth":382,"text":771},{"id":797,"depth":382,"text":798},{"id":808,"depth":355,"text":808},"2026-02-03T00:00:00.000Z","md","2026-02-03T07:33:15.721Z",{},"/post/tech-tips/migrate-macos-to-windows-wsl","---\ntitle: 从 macOS 迁移到 Windows 开发环境\ndate: 2026-02-03\nlastmod: \"2026-02-03T07:33:15.721Z\"\ntags: [\"Windows\", \"WSL\", \"开发环境\"]\n---\n\n![1.00](https://imgx.zzao.club/api/103/%E4%BB%8E*MacOS*%E8%BF%81%E7%A7%BB%E5%88%B0*Windows*?scale=2)\n\n作为一个在 macOS 上开发多年的前端开发者，最近决定尝试 Windows 作为主力开发机。本文详细记录了整个迁移过程和我常用的配置、软件，希望能给同样需要的朋友一些参考。\n\n## windows 开发体验\n\nWindows 原生的开发体验一直被诟病，我从换到 windows 后也确实发现了一些问题。\n\n本来我打算直接使用 WSL2 ，不想让公司的 vpn 软件在系统里随便拉屎。 但是没解决如何把这个软件安装进 debian 里这个问题，所以最后还是破罐子破摔，都装 windows 去了。\n\n刚开始，`pwsh` 配上`oh-my-pwsh`之后视觉上效果还是可以的。\n\n但是自带终端、vscode终端、vscode项目内的一些脚本比如 husky，环境竟然都不一致，很无语。 哪怕配好了node环境，husky 里的 precommit 也没法正常使用 node 命令。\n\n并且后面在各种项目里大量尝试 opencode + oh-my-opencode (omo)，发现内存占用特别高，开的窗口多了就会崩溃。（换了wsl + ubuntu 后改善很多）\n\n于是找了个时间，把系统整个重装了。\n\n以下就是我整个wsl/ubuntu/开发环境/软件等配置的分享。\n\n## WSL 安装过程\n\n### 一键安装（推荐）\n\nWindows 11 或 Windows 10 2004+ 直接一条命令：`wsl --install`\n\n会自动完成：启用 WSL 功能、安装 Linux 内核、设置 WSL2 为默认、安装 Ubuntu。\n\n重启电脑即可使用。\n\n### 手动安装\n\n如果一键安装不可用，需要手动：\n\n1. 启用 WSL 和虚拟机平台功能（以管理员身份运行 PowerShell，使用 `dism.exe` 命令）\n2. 设置 WSL2 为默认版本（Windows 11 通常已默认）\n3. 安装 Ubuntu 22.04：`wsl --install -d Ubuntu-22.04`\n4. 验证：`wsl --list --verbose`\n\n## WSL 磁盘迁移：从 C 盘到其他盘\n\nWSL 默认装 C 盘，空间不够可以迁移。我的迁移流程是：\n\n1. 关闭 WSL：`wsl --shutdown`\n2. 导出备份：`wsl --export Ubuntu-22.04 D:\\wsl-backup\\ubuntu-22.04.tar`\n3. 注销原实例：`wsl --unregister Ubuntu-22.04`\n4. 创建新目录：`mkdir D:\\WSL\\Ubuntu-22.04`\n5. 导入到新位置：`wsl --import Ubuntu-22.04 D:\\WSL\\Ubuntu-22.04 D:\\wsl-backup\\ubuntu-22.04.tar`\n6. 设置默认用户：`ubuntu2204.exe config --default-user your_username`\n\n**迁移结果**：从 C 盘迁到 D 盘，拥有近 1TB 可用空间。\n\n## WSL + Ubuntu 核心配置\n\n### /etc/wsl.conf 配置\n\n创建 `/etc/wsl.conf` 文件，启用 systemd 和镜像网络模式：\n\n- `[boot]` 中设置 `systemd=true` → 可以使用 `systemctl` 管理服务\n- `[network]` 中设置 `networkingMode=mirrored` → WSL 和 Windows 共享 IP，性能更好\n\n> 提示：Windows 开始菜单搜索 \"wsl settings\" 可以可视化配置\n\n修改后需要重启 WSL：`wsl --shutdown`\n\n### 代理配置\n\n我使用 Clash for Windows（开系统代理、不开 TUN 模式），在 `.zshrc` 中设置代理环境变量：\n\n- `export HTTP_PROXY=\"http://127.0.0.1:7890\"`\n- `export HTTPS_PROXY=\"http://127.0.0.1:7890\"`\n- `export ALL_PROXY=\"socks5://127.0.0.1:7890\"`\n\n由于使用镜像网络模式，WSL 可以直接通过 `127.0.0.1` 访问 Windows 的代理端口。\n\n## 前端开发环境配置\n\n### 包管理器策略\n\n我的策略：**全局工具用 Bun，Node 版本管理用 fnm，项目依赖用 pnpm**\n\n- **Bun**：全局工具速度快、性能好\n- **fnm**：轻量级版本管理器，比 nvm 快，支持 `.node-version` 和 `.nvmrc` 自动切换\n- **pnpm**：项目依赖管理\n\n### 安装与版本\n\n**Bun 安装**：`curl -fsSL https://bun.sh/install | bash`\n\n**fnm 安装**：`curl -fsSL https://fnm.vercel.app/install | bash`\n- 配置自动切换：`eval \"$(fnm env --use-on-cd)\"`\n- 安装 Node：`fnm install 22 && fnm use 22 && fnm default 22`\n\n**pnpm 安装**：`bun install -g pnpm`\n\n我的版本：fnm 1.38.1、Node 22.21.1、Bun 1.3.7、pnpm 10.11.0\n\n### 实际使用\n\n```bash\n# 全局工具用 Bun 安装\nbun install -g typescript tsx vite pm2\n\n# 项目开发时\nfnm use                 # 自动切换 Node 版本\npnpm install           # 安装依赖\npnpm dev               # 启动开发服务器\n```\n\n## Zsh + Oh My Zsh 配置\n\n### 安装\n\n1. **Zsh**：`sudo apt install zsh -y`，设为默认：`chsh -s $(which zsh)`\n2. **Oh My Zsh**：官方安装脚本 `sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\"`\n3. **Powerlevel10k 主题**：`git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k`\n4. **必装插件**：\n   - zsh-autosuggestions：`git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions`\n   - zsh-syntax-highlighting：`sudo apt install zsh-syntax-highlighting` 或 git clone\n\n### 我的配置\n\n**在 `~/.zshrc` 中**：\n\n- 主题：`ZSH_THEME=\"powerlevel10k/powerlevel10k\"`\n- 插件：`plugins=(git zsh-autosuggestions zsh-syntax-highlighting z extract)`\n- 代理（默认启用）：\n  ```bash\n  export HTTP_PROXY=\"http://127.0.0.1:7890\"\n  export HTTPS_PROXY=\"http://127.0.0.1:7890\"\n  export ALL_PROXY=\"socks5://127.0.0.1:7890\"\n  ```\n  也可以保留一个 unproxy 函数用于清除代理\n- fnm 自动切换 Node 版本：`eval \"$(fnm env --use-on-cd)\"`\n\n### 字体设置（重要）\n\nPowerlevel10k 需要 Nerd Fonts。推荐 **MesloLGS NF**，下载地址：https://www.nerdfonts.com/font-downloads\n\n在 Windows Terminal 中设置：设置 → Ubuntu-22.04 → 外观 → 字体 → 选择 MesloLGS NF\n\n## WSL + VSCode 开发配置\n\n### 核心要点\n\n**必装扩展**：Remote - WSL（在 WSL 端安装其他扩展）\n\n**常用扩展**（在 WSL 端）：\n- ESLint、Prettier：代码检查和格式化\n- Vue(Official)：Vue 3 开发\n- Tailwind CSS IntelliSense：类名提示\n- GitLens：Git 增强\n\n### 从 WSL 启动 VSCode\n\n```bash\n# 在当前目录打开\ncode .\n\n# 打开指定目录\ncode ~/projects/my-project\n```\n\n首次运行会自动在 WSL 中安装 VSCode Server。\n\n### 配置要点\n\n- 启用保存时格式化和 ESLint 自动修复\n- 设置 Zsh 为默认终端\n- 排除不必要的文件监控（node_modules、.nuxt、.next、dist）\n- **项目放在 WSL 文件系统** `~/projects/`，不要放 `/mnt/c/`（很慢）\n- Windows Defender 排除 WSL 目录：`Add-MpPreference -ExclusionPath \"D:\\WSL\"`\n\n## OpenCode 配置\n\nOpenCode 是一个强大的 AI 辅助编程工具，支持多种模型和自定义 agent。\n\n### 安装与配置\n\n使用 oh-my-opencode 可以一键安装并自动配置：\n\n- 安装命令：`bunx ohmyopencode@latest install`\n- 按照提示选择模型和配置即可\n\n## 常用软件\n\n### Raycast (软件启动器)\n\n一开始 windows 上我用的是 `utools`，轻度使用，我知道里面有很多插件，但是打开速度真心不快。 而仅仅作为软件启动器来用，因为我喜欢把桌面上的图标都删掉，露出整个壁纸。\n\n重装完之后，和群里的小伙伴交流了之下，才发现 Raycast 有 windows 版本，于是尝试了一下，体验上比 windows 强的多。\n\n比如，我会在搜索框内简单算个数，能可以直接打开 `web search`，其他就是启动软件了，刚注册是可以体验AI功能的，不过我完全用不上。\n\n### 微信输入法\n\n微信输入法本身输入法相关的功能其实是不如搜狗的，可能也不如别的。 但是它生的好，生态就好。经过和其他设备配对之后，可以很方便的**多端文本、图片复制**。带有文本剪贴板历史，按`v`键激活，也能省下一个单独的剪贴板软件。\n\n手机端的微信输入法还自带排版成图，类似发小红书的时候把短标题弄个简单背景再发出去。前一阵我用来给文章配封面，但是现在我有自己的[IMGX](https://imgx.zzao.club)了，也不太需要了。\n\n### PixPin 截图工具\n\n截图工具一般都要有一个，这个是开源的。我想我还在用它的唯一原因就是我还没来得及用AI复刻一个截图工具吧。\n\n### Zotepad 文章编辑器/发布工具\n\n本来我在 macos 上使用 Obsidian 的，但是我用 AI 又给自己写了一个编辑器。并且集成常用的软件，自己常用的工作流。只会越用越顺手。\n\n这个工具基于 Tauri2 + Nuxt4，多端一致，目前每次都会打包 macos/安卓/exe 这三个平台的包，对应我在公司使用 windows，在家使用 macos，手上拿的安卓手机。\n\n目前我内置了**图床功能**，可以直接上传到腾讯云对象存储，所以我卸载了PicGo (感谢PicGo的陪伴)。\n\n在我用zotepad写文章时，可以直接打开侧边栏选择已经上传的图片插入，感觉方便多了。\n\nmarkdown编辑器选的 `milkdown`，所见即所得模式。 复制样式到公众号，这个功能在我博客站上就有，也挪过来了。并且用博客站做了公众号接口的转发，可以直接在编辑器内点击发送到公众号草稿箱。支持文章和图文两种模式。发送完再去手机端的公众号助手审一遍就可以发布了。\n\n### Flyenv\n\n我主要拿它来运行Ngxin、Mysal、Redis、PGSQL，是作为不能用`Docker Desktop`时的替代品。\n\n## 使用感受\n\n**WSL 是最好的 Linux 发行版，Windows 是最好的 Linux 桌面**\n\n这话说的没毛病。\n\n重点是所有开发环境、代码都在 Ubuntu 里，下次换另一台电脑就和从c盘迁移到别的盘一样，直接把整个打包出来就可以了，十分方便。\n\n而且可以随意安装多个linux环境，可以实验各种配置，玩坏了直接删除重建。比当年自己装双系统啥的省事多了。\n\n***\n\n好了分享结束，有问题欢迎评论群交流。\n",{"title":5,"description":341},"post/tech-tips/migrate-macos-to-windows-wsl",[880,881,882],"Windows","WSL","开发环境","mwfnPm9Tb4uqXf0rbBA0mMgUCRdGzIkQmzC_HlDkwbQ",[885,889],{"title":886,"path":887,"stem":888},"OpenClaw 安装入门（Windows）","/post/zzao/openclaw/openclaw-install-windows","post/zzao/openclaw/openclaw-install-windows",{"title":890,"path":891,"stem":892},"假设你是AI，你的Skill应该是什么样的","/post/zzao/ai-skill-structure","post/zzao/ai-skill-structure",1779005085206]