使用 Visual Studio Code 的 WSL 2
2019 年 9 月 3 日,作者:Matt Hernandez,@fiveisprime
自从 适用于 Linux 的 Windows 子系统 2 (WSL 2) 的初始测试版发布以来,已经过去了几周,我想分享一些关于它是什么以及它将如何帮助你提高工作效率的信息。自从它在 Windows 预览体验成员 中发布以来,我一直使用测试版,并且很快便将我的日常开发任务完全切换到使用 WSL 2。
WSL 2 中的变化
第一个版本在 Windows 上本地实现系统调用。系统调用本质上是内核提供的函数,这意味着只有实现的调用在 WSL 环境中得到支持。如果你使用过早期的 WSL 版本,并发现一些尝试访问未实现系统调用的库和工具(例如,Go 调试器),你可能会注意到这一点。虽然已经对添加对更多函数的支持进行了增量改进,但 WSL 2 通过提供带有完整 Linux 内核的轻量级虚拟机来采用完全不同的方法。
没错,WSL 2 现在提供了一个 VM,但它并非你对 VM 的预期体验。传统的 VM 启动速度可能很慢,并且感觉孤立,而 WSL 2 则与之前的版本一样无缝。期待 Windows 和 Linux 之间的高度集成、极快的启动时间、较小的资源占用以及完全无需配置或管理 VM。
所有这些都转化为更高的 IO 性能 - 与 WSL 1 相比,速度提高了 20 倍 - 以及完整的系统调用功能。你的模块将安装得更快,你的存储库将克隆得更快,你最喜欢的库将可靠地运行。性能的提高意味着你还可以运行 Zsh 等其他 shell,甚至可以使用你最喜欢的 Node.js 版本管理工具。
WSL 2 和 Visual Studio Code
如果你要继续操作,请确保你已加入 Windows 预览体验成员构建并启用了 WSL 2。你可以了解有关如何在 WSL 2 安装说明 中开始使用。
你还需要安装 Visual Studio Code 和 WSL 扩展。可选地,查看 测试版 Windows 终端 以获得 Windows 上最佳的终端体验。
通过启动 Windows 终端并创建一个新的 WSL 选项卡,或通过启动你安装的 Linux 发行版来打开 WSL。你还可以通过在终端中输入 wsl
直接从命令提示符或 PowerShell 切换到 Linux - 这只是 WSL 深度集成到 Windows 的众多方式之一。你还可以使用内联 WSL 来完成一些不可思议的事情,例如…
从你的终端中,使用 code .
从 WSL 启动 Visual Studio Code。你甚至可以使用 wsl code .
内联切换到 Linux、启动 VS Code,然后返回到你的 Windows shell。😏
就我个人而言,我将 WSL 2 用于 Windows 上 100% 的开发 - 所有开发工具(如 Git 和 Node.js)都安装在我的 Linux 环境中。查看这篇文章 技巧和窍门,了解有关在 WSL 中自定义 VS Code 以满足你需求的更多信息。
以下是我的设置示例。
请注意,在屏幕截图中,我已连接到我的 WSL 2 实例(在左下方查看作为远程源的“Ubuntu-18.04”),并且已从调试器启动了一个 Node.js 应用程序,它处于断点状态。在调试控制台中,我已输入 process.platform
来显示 WSL 扩展如何将所有编辑器交互默认设置为 Linux 环境。要使用此功能,完全无需进行任何配置,只需从 WSL 扩展连接到你的 WSL 环境,然后开始工作。此外,请注意我的行尾默认设置为 LF(显示在状态栏中),无需设置任何额外的 Git 配置选项 - 如果你在 Windows 上进行开源工作,你就会明白为什么这很重要。
我最喜欢的所有扩展都正常工作,并且都针对正确的环境。例如,“源代码管理”视图正在使用安装在 WSL 2 中的 Git 版本显示项目中的更改,并且 Docker 扩展已配置 为访问 Docker Desktop WSL 2 技术预览。
所有这些都通过使用 WSL 扩展 实现。编辑、调试,甚至扩展都完全按照你预期的方式在你的最喜欢的编辑器中工作。
WSL 2 的优势
总结
- 虚拟机资源密集型,并且会创建非常分离的体验。
- 最初的 WSL 联系非常紧密,但与 VM 相比,性能相当差。
- WSL 2 采用混合方法,使用轻量级 VM,提供完全连接的体验,并且性能高。
在 Visual Studio Code 中添加 WSL 扩展,你将拥有所有优势 - Linux 和 Windows 兼容性,适用于你的工具,并具有出色的性能和无缝的开发体验。
进一步阅读
为了帮助你将 VS Code 与 WSL 配合使用,有一个 在 WSL 中工作的教程。如果你想了解有关 VS Code 远程的更多信息,以及它如何通过 SSH 和在 Docker 容器内工作,请参阅完整的 VS Code 远程开发文档。
祝你远程编码愉快!
Matt Hernandez,VS Code 程序经理 @fiveisprime