适用于 WSL 2 的 Visual Studio Code

2019 年 9 月 3 日,作者 Matt Hernandez,@fiveisprime

Windows Subsystem for Linux 2 (WSL 2) 的初始 Beta 版本发布以来已经过去几个月了,我想分享一些关于它的信息,以及它将如何帮助你提高工作效率。自从它在 Windows Insiders 中发布以来,我一直在使用 Beta 版,并且很快切换到完全在日常开发任务中使用 WSL 2。

WSL 2 的变化

第一个版本在 Windows 上原生实现了系统调用。系统调用本质上是由内核提供的函数,这意味着只有已实现的调用在 WSL 环境中受支持。如果你使用过早期版本的 WSL,并且发现库和工具尝试访问尚未实现的系统调用(例如,Go 调试器),你可能已经注意到这一点。虽然对添加更多功能进行了渐进式改进,但 WSL 2 采取了完全不同的方法,它附带了一个带有完整 Linux 内核的轻量级虚拟机。

没错,WSL 2 现在附带了一个虚拟机,但这与你可能期望的虚拟机体验不同。传统的虚拟机可能启动缓慢且感觉隔离,但 WSL 2 就像以前的版本一样无缝。期待 Windows 和 Linux 之间的高度集成、极快的启动时间、小的资源占用空间,以及绝对无需虚拟机配置或管理。

所有这些都转化为更高的 IO 性能——比 WSL 1 快 20 倍——以及完整的系统调用能力。你的模块将安装得更快,你的存储库将克隆得更快,并且你最喜欢的库将可靠地工作。性能的提升意味着你还可以运行替代 shell,例如 Zsh,甚至可以使用你最喜欢的 Node.js 版本管理实用程序。

WSL 2 和 Visual Studio Code

如果你正在按照步骤操作,请确保你已加入 Windows 预览体验计划并启用了 WSL 2。你可以在 WSL 2 的安装说明中了解更多关于如何开始的信息。

你还需要安装 Visual Studio CodeWSL 扩展。可选地,查看 Beta 版 Windows 终端,以获得 Windows 上最佳的终端体验。

WSL extension

打开 WSL,可以通过启动 Windows 终端并创建一个新的 WSL 选项卡,或者通过启动你安装的 Linux 发行版。你也可以直接从命令提示符或 PowerShell 切换到 Linux,只需在终端中输入 wsl——这只是 WSL 深度集成到 Windows 的众多方式之一。你还可以使用 WSL 内联来做一些意想不到的事情,比如…

WSL cow say example

从你的终端,使用 WSL 中的 code . 命令启动 Visual Studio Code。你甚至可以使用 wsl code . 切换到 Linux 内联,启动 VS Code,然后返回到你的 Windows shell。 😏

就我个人而言,我 100% 在 Windows 上使用 WSL 2 进行开发——所有开发工具,如 Git 和 Node.js,都安装在我的 Linux 环境中。查看这篇 技巧和窍门文章,了解更多关于在 WSL 中自定义 VS Code 以满足你的需求的信息。

这是我的设置。

Matt's WSL 2 setup

请注意,在屏幕截图中,我已连接到我的 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 非常连接,但与虚拟机相比,性能相当差。
  • WSL 2 带来了一种混合方法,它结合了轻量级虚拟机、完全连接的体验和高性能。

在 Visual Studio Code 中添加 WSL 扩展,你将拥有两全其美的优势——Linux 和 Windows 工具的兼容性,以及出色的性能和无缝的开发体验。

延伸阅读

为了帮助你设置 VS Code 和 WSL,这里有一个在 WSL 中工作的教程。如果你想了解更多关于 VS Code Remote 以及它如何在 SSH 和 Docker 容器中工作的信息,请参阅完整的 VS Code 远程开发文档

远程编码愉快,

Matt Hernandez,VS Code 项目经理 @fiveisprime