PowerShell自动化脚本:一键配置Cursor/VSCode开发环境
1. 项目概述:一键配置你的主力代码编辑器
如果你和我一样,是个经常需要重装系统或者在不同Windows设备上切换的开发者,每次装完系统后,给代码编辑器(比如Cursor或者VSCode)重新配置一遍环境,绝对是个让人头疼的体力活。安装扩展、调整主题、设置字体、微调配色……一套流程下来,半小时就没了,而且很难保证每次配置都完全一致。metraton/devkit这个项目,就是为了解决这个痛点而生的。
简单来说,它是一个用PowerShell编写的自动化安装与配置脚本。你只需要运行一条命令,它就能帮你完成从编辑器安装、扩展管理到界面主题定制的全套工作。它特别适合追求效率、希望开发环境能快速就绪且保持一致的Windows开发者。无论是前端、后端还是DevOps工程师,只要你的主力工具是Cursor或VSCode,这个工具都能让你在几分钟内获得一个开箱即用、经过精心调校的现代化开发环境。
2. 核心设计思路与方案解析
2.1 为什么选择PowerShell和winget?
这个项目的基石是PowerShell和Windows自带的包管理器winget。这个组合的选择非常务实且高效。
首先,PowerShell是Windows的原生脚本环境,无需额外安装运行时,保证了脚本在绝大多数Windows 10/11系统上的直接可用性。相比于Python或Node.js脚本,它减少了用户的前置依赖,降低了使用门槛。其次,脚本采用了模块化函数设计,将安装、配置、扩展管理等逻辑分离,使得代码结构清晰,易于维护和扩展。例如,你可以看到它有为Install-Editor、Set-EditorSettings、Install-Extensions等独立函数,这种设计让后续增加对新编辑器的支持变得相对简单。
其次,依赖winget进行软件安装是当前Windows下的最佳实践。winget是微软官方的命令行包管理器,类似于macOS的Homebrew或Linux的apt。使用它来安装Cursor或VSCode,有几个明显优势:
- 官方与可靠:
winget的软件源由微软和软件厂商直接维护,能确保下载到的是官方正版,避免了从第三方网站下载可能带来的安全风险。 - 静默安装:通过
winget install --silent参数,可以实现无界面、无交互的静默安装,这对于自动化脚本至关重要。 - 版本管理:虽然本脚本默认安装稳定版,但
winget本身支持指定版本安装和升级,为未来脚本的版本控制功能留下了扩展空间。
注意:脚本执行的前提是你的系统已安装
winget。对于较新的Windows 10和所有Windows 11,它通常是预装的。如果没有,你需要按照微软官方文档先行安装。这是整个自动化流程中唯一可能需要手动干预的步骤。
2.2 “固执己见”的配置哲学
项目描述中提到了“opinionated settings”,这翻译过来就是“固执己见的配置”。这不是一个缺点,反而是它的价值所在。它没有提供一个海量的、可配置项的图形界面,而是直接为你做出了一系列经过实践检验的“最佳选择”。
这种设计哲学的好处是:
- 减少选择 paralysis:新手不必在成百上千的扩展和主题中迷茫;老手也不必重复劳动。
- 保证一致性:提供的配置套餐是一个经过打磨的、内部协调的整体。例如,其默认的“暖羊皮纸”色调配色方案,与推荐的“Tokyo Night”主题、JetBrains Mono字体在视觉上是和谐统一的,避免了用户自己东拼西凑可能产生的违和感。
- 快速达到生产就绪状态:集成的扩展覆盖了版本控制(GitLens)、远程开发(WSL, SSH, Containers)、主流编程语言(Go, Rust, Python, TS)和基础设施即代码(Terraform, Docker, Kubernetes)等核心开发场景。运行脚本后,你得到的不是一个空壳编辑器,而是一个武装到牙齿的IDE。
当然,“固执己见”并不意味着不可改变。脚本通过丰富的命令行参数,允许你覆盖其默认选择,比如指定只安装某个编辑器、更换主题、或者自定义每一处的颜色代码。你可以在其“固执”的蓝本上进行个性化微调。
2.3 扩展管理的策略与考量
脚本为Cursor和VSCode预置了不同的扩展列表(Cursor 24个,VSCode 14个),这个差异很有意思,反映了两个编辑器生态和定位的细微不同。
Cursor的扩展列表更全面,因为它将自己定位为“AI原生”的编辑器,其开箱体验更接近一个轻量级IDE。脚本除了安装语言和工具链扩展外,还特意移除了Cursor捆绑的Google Gemini/Cloud AI扩展(通过code --uninstall-extension命令)。这是一个非常实用的操作,对于网络环境特殊或更倾向于使用其他AI服务的用户来说,避免了手动清理的麻烦,也让编辑器启动更纯净。
VSCode的扩展列表则更精简聚焦,主要集中在远程开发、核心语言支持和基础效率工具上。它额外添加了西班牙语语音包扩展,这可能是作者的个人需求,但也展示了脚本的可定制性——你可以很容易地修改脚本中的扩展ID数组,来适配你自己的必备扩展清单。
扩展安装的逻辑是幂等的,即如果扩展已安装,脚本命令不会报错,这保证了脚本可以安全地多次运行。安装后要求重启编辑器,是为了确保所有扩展都能被正确加载和激活,这是一个关键的实操细节。
3. 脚本核心功能与参数详解
3.1 安装流程拆解
当你运行.\install.ps1 -Editor Cursor,VSCode时,脚本在背后执行了一个精细的流水线操作。理解这个过程,有助于你在出现问题时进行排查。
- 参数解析与验证:脚本首先检查
-Editor参数是否合法(只能是Cursor,VSCode或两者逗号分隔)。它会根据输入,决定后续为哪些编辑器执行流程。 - 编辑器安装:对于每个目标编辑器,调用
winget install命令。例如,安装Cursor的命令实质是winget install -e --id Anki.Cursor --silent。这里-e表示精确匹配ID,--silent实现静默安装。脚本会检查安装是否成功。 - 配置目录准备:编辑器安装后,其用户配置通常位于
%APPDATA%目录下(如%APPDATA%\Code对于VSCode,%APPDATA%\Cursor对于Cursor)。脚本会定位这些目录,为写入设置文件做好准备。 - JSON设置文件生成与注入:这是核心步骤。脚本会根据默认值和你传入的颜色参数,动态构建一个完整的
settings.json内容。这个JSON文件定义了字体、主题、颜色自定义、编辑器行为(如缩进、折行、小地图)等所有设置。然后,脚本将这个JSON内容写入到编辑器配置目录下的User/settings.json文件中。这里有一个关键技巧:脚本采用“合并”而非“覆盖”的策略。它先读取已存在的settings.json(如果有),然后将其与脚本生成的配置进行深度合并。这意味着,如果你之前已经有一些自定义设置,运行脚本不会丢失它们,而只更新或添加脚本管理的配置项。 - 扩展批量安装:脚本遍历预定义的扩展ID数组,对每个扩展执行
code --install-extension <extension-id>命令(对于Cursor,命令是cursor --install-extension)。这个过程是线性的,可能会花费一些时间,取决于网络速度和扩展数量。 - 清理与提示:对于Cursor,执行卸载特定AI扩展的操作。最后,脚本输出总结信息,并提醒你需要重启编辑器以使所有扩展和设置生效。
3.2 颜色定制参数实战指南
脚本提供了一整套颜色参数,允许你深度定制编辑器的视觉外观。默认的“暖羊皮纸”色调(#e8e3d8,#ddd8cc等)旨在营造一种柔和、护眼的氛围。但你可以完全重写它。
如何选择颜色?
- 使用主题默认色:如果你喜欢某个主题(如
Tokyo Night)自带的配色,不希望脚本覆盖,可以将对应的颜色参数设置为空字符串""。例如,-ColorEditor ""就会让编辑器背景色使用主题默认值,而不是脚本定义的#e8e3d8。 - 自定义配色方案:你可以传递任何十六进制颜色码。建议保持色彩协调。例如,你可以选择一个深色主题(如
-Theme "Default Dark+"),然后自定义一套深色配色:.\install.ps1 -Editor Cursor -Theme "Default Dark+" -ColorEditor "#1e1e1e" -ColorSidebar "#252526" -ColorStatusBar "#007acc" - 透明度控制:注意滚动条相关的颜色(
-ColorScrollbar等)默认值带有透明度(40,60,80表示十六进制透明度)。这是通过8位HEX码(ARGB)或RGBA值实现的。例如,#00000040表示黑色(#000000)带有约25%的透明度(40)。你可以利用这个特性调整滚动条的视觉效果。
参数传递示例:
# 安装Cursor,使用深色主题,并自定义一套蓝灰色系的配色 .\install.ps1 -Editor Cursor ` -Theme "Default Dark Modern" ` -ColorEditor "#2b2d3a" ` -ColorSidebar "#222430" ` -ColorActivityBar "#1a1c27" ` -ColorStatusBar "#4a8fa3" ` -ColorTitleBar "#222430" ` -ColorTerminalBg "#1e2029"这里使用了PowerShell的反引号`来将长命令换行,保持可读性。
3.3 字体与主题配置解析
字体配置是开发体验中至关重要却常被忽视的一环。脚本默认设置了JetBrains Mono作为首选字体,并启用了连字(ligatures)。
- 为什么是JetBrains Mono?这是一款专为编程设计的等宽字体,字符区分度高(如
0和O,1,l和I),连字功能可以将>=,=>等组合符号渲染成更美观的单一字形,提升代码的可读性和美观度。 - 回退机制:设置了
Cascadia Code作为备选字体。这是微软出品的一款优秀的编程字体,如果系统没有安装JetBrains Mono,会自动使用它,确保了配置的鲁棒性。 - 如何修改字体?如果你想使用其他字体,例如
Fira Code或Source Code Pro,你需要手动修改脚本生成的settings.json文件,或者更推荐的方式是:fork这个项目,修改脚本中构建JSON的$settingsJson对象里的editor.fontFamily字段。这样你就可以拥有自己版本的“固执己见”配置。
主题方面,默认的Tokyo Night Light是一款口碑极佳的浅色主题。脚本通过workbench.colorTheme设置项来应用它。主题本身需要通过扩展安装(脚本已包含),颜色自定义参数则是叠加在主题之上的微调。如果你传入的颜色值为"",则完全遵从主题的配色;如果你传入了具体颜色,这些自定义颜色会覆盖主题对应部分的设置。
4. 完整实操流程与现场记录
4.1 环境准备与脚本获取
假设你在一台新安装的Windows 11电脑上操作。
检查并安装winget(如需要): 打开PowerShell终端(以管理员身份运行并非必须,但推荐),输入:
winget --version如果显示版本号(如
v1.7.2000),则跳过此步。如果提示“找不到命令”,你需要打开Microsoft Store,搜索“App Installer”并确保它是最新版本。或者,从GitHub的 winget releases页面 下载并安装。获取devkit脚本: 你有两种方式:
- 克隆仓库(推荐):如果你熟悉Git,打开终端,导航到你希望存放的目录(如
D:\Dev),执行:git clone https://github.com/metraton/devkit.git cd devkit - 直接下载:访问项目的GitHub页面,点击“Code”按钮,选择“Download ZIP”。解压ZIP文件到一个路径中不含空格的目录(例如
C:\Tools\devkit)。
- 克隆仓库(推荐):如果你熟悉Git,打开终端,导航到你希望存放的目录(如
4.2 首次运行与配置验证
我们将安装Cursor编辑器,并采用默认配置。
- 打开PowerShell终端:在脚本所在目录的空白处,按住
Shift键并单击鼠标右键,选择“在此处打开PowerShell窗口”或“打开终端窗口”。 - 执行安装命令:
首次运行时,PowerShell可能会因执行策略限制而阻止脚本运行。你会看到类似错误:.\install.ps1 -Editor Cursor.\install.ps1 : 无法加载文件 C:\...\install.ps1,因为在此系统上禁止运行脚本。 - 解决执行策略问题: 这是Windows的安全特性。我们需要临时更改执行策略。在刚才的终端中,输入:
输入Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope ProcessY确认。这个命令只对当前这个PowerShell会话生效,关闭后会自动恢复,比较安全。然后再次运行安装命令。 - 观察安装过程:脚本开始运行。你会看到一系列输出:
Checking for winget...-> 已安装。Installing Cursor...-> 调用winget下载安装Cursor,进度条会出现。Configuring Cursor settings...-> 生成并写入settings.json。Installing extensions for Cursor...-> 开始逐个安装扩展,列出扩展名和进度。Uninstalling bundled AI extensions...-> 卸载Gemini等扩展。Done!-> 安装完成,提示重启编辑器。
- 启动并验证: 打开开始菜单,启动Cursor。首次启动可能会稍慢,因为扩展正在激活。
- 验证主题:查看左下角设置图标 -> 主题,确认是
Tokyo Night Light。 - 验证字体:打开一个文本文件,查看字体是否为JetBrains Mono。可以在设置中搜索
font查看。 - 验证扩展:点击左侧活动栏的扩展图标,在“已启用”列表中,你应该能看到GitLens、Remote - SSH、Python、Rust等扩展。
- 验证颜色:感受一下编辑器的整体色调,是否是你喜欢的暖色系。
- 验证主题:查看左下角设置图标 -> 主题,确认是
4.3 进阶:自定义配置并安装双编辑器
现在,我们进行更复杂的操作:同时为Cursor和VSCode安装一套深色自定义配置。
准备自定义颜色:假设我们选定了以下深色配色方案(基于经典的VS Dark+微调):
- 编辑器背景:
#1e1e1e - 侧边栏:
#252526 - 活动栏:
#333333 - 状态栏:
#007acc - 标题栏:
#252526 - 终端背景:
#0c0c0c - 标签页和滚动条使用主题默认色。
- 编辑器背景:
执行复合命令:
.\install.ps1 -Editor Cursor,VSCode ` -Theme "Default Dark+" ` -ColorEditor "#1e1e1e" ` -ColorSidebar "#252526" ` -ColorActivityBar "#333333" ` -ColorStatusBar "#007acc" ` -ColorTitleBar "#252526" ` -ColorTerminalBg "#0c0c0c" ` -ColorTabActive "" ` -ColorTabInactive "" ` -ColorScrollbar ""注意,我们将
-ColorTabActive,-ColorTabInactive和-ColorScrollbar设为空字符串"",让它们使用“Default Dark+”主题的默认颜色。过程观察:脚本会依次处理Cursor和VSCode。你会看到它先完成Cursor的全部流程,然后再开始VSCode的安装与配置。整个时间会比只安装一个编辑器长。
结果对比:分别打开Cursor和VSCode。你会发现它们拥有了完全相同的深色视觉风格和几乎一致的核心扩展集(除了扩展数量的差异),实现了跨编辑器的环境统一。这对于同时使用多个编辑器的开发者来说,能极大减少认知切换成本。
5. 常见问题排查与实战心得
5.1 安装失败问题速查表
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 脚本无法执行,提示“禁止运行脚本” | PowerShell执行策略限制 | 在当前会话运行Set-ExecutionPolicy RemoteSigned -Scope Process |
winget命令未找到 | 系统未安装App Installer或版本太旧 | 从Microsoft Store更新“App Installer”,或从GitHub手动安装winget |
| 编辑器安装失败,提示“无法找到程序包” | winget源中编辑器ID变更或网络问题 | 1. 检查ID:winget search cursor2. 临时使用 --source参数指定源(如MSStore)3. 检查网络连接 |
| 扩展安装缓慢或超时 | 扩展市场(VS Code Marketplace)网络连接不畅 | 1. 耐心等待,脚本有重试机制(如果实现) 2. 配置网络代理(如果可用) 3. 手动分批安装关键扩展 |
| 设置或扩展不生效 | 编辑器未重启;配置文件路径错误 | 1.务必重启编辑器 2. 检查 %APPDATA%\Cursor或%APPDATA%\Code目录下User/settings.json文件内容是否正确 |
| 自定义颜色无效 | 颜色值格式错误;主题不支持 | 1. 确认颜色值为#RRGGBB或#AARRGGBB格式2. 尝试将主题切换到 Default Dark+等基础主题再测试颜色 |
5.2 个人实操心得与技巧
“版本锁定”你的配置:这个脚本本质上是将你的编辑器配置“代码化”了。最进阶的用法是fork这个仓库,将其作为你个人开发环境配置的专属版本库。你可以:
- 修改
install.ps1中的默认扩展列表,增删你需要的扩展。 - 修改默认的颜色和字体配置,打造独一无二的主题。
- 甚至添加新的函数,用于安装和配置其他开发工具(如Node.js, Docker Desktop, Git)。 这样,你的完美开发环境就变成了一个可版本控制、可一键部署的“基础设施”。
- 修改
处理网络问题:在国内网络环境下,从VS Code Marketplace安装扩展有时会很慢。一个变通方案是,先运行脚本安装编辑器和基础配置,然后手动从扩展市场下载VSIX文件进行离线安装。虽然麻烦,但对于某些必备扩展是可行的。更彻底的办法是研究为
code --install-extension命令配置代理。配置的继承与覆盖:脚本采用合并策略更新
settings.json,这很友好。但如果你希望脚本配置是“绝对权威”,想清除所有旧配置,可以在运行脚本前,备份并删除原有的settings.json文件。脚本会创建一个全新的。为团队共享环境:如果你是团队技术负责人,可以将定制好的脚本放在团队内部Wiki或共享存储中。新同事入职时,运行一条命令就能获得与团队标准一致的开发环境,极大降低了 onboarding 成本和环境差异导致的“在我机器上是好的”问题。
调试脚本:如果脚本运行出错,可以在PowerShell中打开详细输出和错误捕获,帮助定位问题:
$ErrorActionPreference = 'Stop' # 遇到错误即停止 .\install.ps1 -Editor Cursor -Verbose # 显示详细执行信息仔细阅读红色的错误信息,通常能快速找到问题根源,比如某个扩展ID不存在、权限不足等。
这个devkit项目体现了一种高效的开发者思维:将重复、繁琐的手动操作自动化、代码化。它可能不是面面俱到的,但它在自己设定的范围内做得非常出色。通过理解和掌握它,你不仅能快速搭建环境,更能学到如何用脚本武装自己,将效率提升到新的层次。
