前言
最近用 Cursor 写代码比较多,然后就想看看用 VS Code 写 Swift 是什么体验。然后发现现在 VS Code 已经支持 Swift 6 了,而且支持的还挺好。

作为一个用了多年 Xcode 的 iOS 开发者,我一直觉得 VS Code 就是个"轻量级玩具"。但这次更新后,我第一次动了想要换编辑器的念头。说真的,看完这些新功能,我突然觉得 Apple 这次是真的听到了开发者的呼声。今天必须跟大家好好聊聊这事儿!
VS Code 终于支持 swift-testing 了!
还记得之前在 VS Code 里写测试有多痛苦吗?只能用古老的 XCTest,每次都要手动运行。现在呢?Swift 6 的 swift-testing 完美集成到 VS Code 里了!不仅能在测试资源管理器里直接看到所有测试,还能一键运行、调试,甚至查看代码覆盖率。

更牛的是什么?它支持自定义测试名称和测试参数!这意味着你可以写出这样的测试:
@Test("用户登录成功的场景", arguments: ["正确密码", "Face ID", "Touch ID"])
func testUserLogin(method: String) {
// 测试代码
}
测试发现速度也快得飞起,项目一加载完,所有测试位置就自动识别出来了。再也不用等半天才能跑测试了!
代码覆盖率可视化,终于不是 Xcode 专属了
这个功能我等了太久了!以前在 VS Code 里看代码覆盖率,要么装各种插件,要么就得切换到 Xcode。现在 VS Code 原生支持了!测试跑完后,覆盖率结果直接显示在 TestExplorer 面板里,哪行代码没测试到,一目了然。

最让我惊喜的是,它还能显示每个文件、每个函数的覆盖率百分比。写单元测试的时候,终于知道该往哪里补充了。
重命名功能:不只是改个名字那么简单
SourceKit-LSP 新增的重命名功能,真的是解决了我的一个大痛点。以前在 VS Code 里重命名一个函数,只能用查找替换,经常会误伤其他同名的变量。现在呢?它能智能识别 Swift 的命名模式,包括带参数标签的函数!
举个例子,你有这样一个函数:
func loadUser(withID id: String, completion: @escaping (User?) -> Void)
现在你想把它改成 fetchUser,只需要右键选择"重命名符号",所有调用的地方都会正确更新,包括参数标签!更厉害的是,它还支持跨语言重命名。如果你的 Swift 代码通过桥接调用了 Objective-C,重命名时两边都会同步更新。这简直是混编项目的福音啊!
swift-format 集成:代码风格终于统一了
团队里总有人喜欢用 4 个空格缩进,有人喜欢用 2 个,每次 code review 都要为这事儿吵架。现在好了,SourceKit-LSP 直接集成了 swift-format!Command Palette 里选择"格式化文档",瞬间搞定。如果你想自定义格式化规则,只需要在项目根目录放一个 .swift-format 文件:
{
"indentation": {
"spaces": 2
},
"maximumBlankLines": 1,
"respectsExistingLineBreaks": true
}
整个团队用同一套规则,再也不用为代码风格争论了。
告别 CodeLLDB,原生调试体验来了
这个改进对 Windows 和 Linux 用户来说简直是救星!以前在非 Mac 平台上调试 Swift,必须依赖 CodeLLDB 扩展,配置复杂不说,还经常出各种奇怪的问题。Swift 6 工具链自带了 lldb-dap 调试适配器,开箱即用!断点、变量查看、调用栈,所有功能都原生支持。我在 Windows 上测试了一下,调试体验几乎和 Xcode 一样流畅。这对跨平台开发来说,意义重大。
工具链选择:终于不用手动配置了
还记得以前在 VS Code 里切换 Swift 版本有多麻烦吗?要改环境变量,要重启编辑器,搞不好还要重启电脑……现在只需要 Command + Shift + P,输入"Swift: Select Toolchain...",所有可用的工具链都列出来了:
.macOS 上能看到所有 Xcode 版本和 Swift 快照版本
.Linux 上显示通过 Swiftly 安装的所有版本
.Windows 上列出所有已安装的工具链

切换秒完成,立即生效。对于需要在不同 Swift 版本间切换的开发者,这个功能太实用了!
后台索引:再也不用先编译了
这个功能目前还是实验性的,但很强!以前用 VS Code 开发 Swift,最痛苦的就是必须先编译项目,代码补全和跳转才能正常工作。项目大一点,光等编译就要喝好几杯咖啡。现在 SourceKit-LSP 支持后台索引了!打开项目就能用,不需要编译。虽然还在实验阶段,但我试用下来,体验已经很不错了。开启方法也很简单,在设置里找到相关选项打开就行。具体步骤官方指南里有详细说明。
一些让人惊喜的小细节
除了这些大功能,还有很多贴心的小改进:
1. 测试名称本地化
测试可以用中文命名了!虽然是小功能,但对国内开发者特别友好:
@Test("用户未登录时应该跳转到登录页面")
func testRedirectToLogin() {
// 测试逻辑
}
2. 性能优化
整体响应速度提升明显,尤其是大项目。代码补全的延迟从之前的 1-2 秒降到了几乎无感。
实际体验:真的能替代 Xcode 吗?
我用新版本开发了一个小项目,说说真实感受:
优点:
1.启动速度快,几秒就能开始写代码
2.内存占用小,8GB 内存的 MacBook Air 也能流畅运行
3.扩展生态丰富,各种工具应有尽有
4.跨平台体验一致,在 Windows 上也能愉快地写 Swift
不足:
1.Interface Builder 还是得用 Xcode
2.某些高级调试功能还不如 Xcode 完善
3.iOS 模拟器集成还不够好
总的来说,对于纯代码开发、服务端 Swift、命令行工具等场景,VS Code 已经是个很好的选择。但如果你要开发完整的 iOS 应用,Xcode 还是绕不开的。
写在最后
看完这些更新,我真地感觉 Swift 生态正在变得越来越开放和友好。不再是 Apple 平台独享,而是真正成为了一门跨平台的现代编程语言。VS Code + Swift 6 的组合,让更多开发者能够低门槛地接触和使用 Swift。这对 Swift 社区的发展意义重大。你们对这次更新怎么看?会考虑在 VS Code 里写 Swift 吗?评论区聊聊呗~