参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

将 WSL 2 与 Visual Studio Code 结合使用

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

适用于 Linux 的 Windows 子系统 2 (WSL 2) 的首个 Beta 版发布已有几个月了,我想和大家分享一下它究竟是什么,以及它将如何帮助你提高生产力。自从它登陆 Windows 预览体验计划以来,我一直在使用这个 Beta 版,并且很快就完全切换到 WSL 2 来处理我的日常开发任务。

WSL 2 有哪些变化

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

没错,WSL 2 现在附带了一个虚拟机,但这并不是你可能期望从虚拟机中获得的体验。传统虚拟机可能启动缓慢且感觉孤立,而 WSL 2 则与之前的版本一样无缝。可以期待 Windows 和 Linux 之间的高度集成、极快的启动时间、很小的资源占用,并且完全无需进行虚拟机配置或管理。

所有这些都转化为更高的 IO 性能——与 WSL 1 相比快了高达 20 倍——以及完整的系统调用能力。你的模块安装会更快,仓库克隆会更快,你喜欢的库也能可靠地工作。性能的提升意味着你还可以运行 Zsh 等替代 shell,甚至使用你最喜欢的 Node.js 版本管理工具。

WSL 2 和 Visual Studio Code

如果你正在跟着操作,请确保你已经加入了 Windows 预览体验计划的 Insider 版本并启用了 WSL 2。你可以在 WSL 2 安装说明中了解如何开始。

你还需要安装 Visual Studio CodeWSL 扩展。此外,可以看看 Windows Terminal Beta 版,以获得在 Windows 上最好的终端体验。

WSL extension

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

WSL cow say example

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

就我个人而言,我在 Windows 上的开发 100% 都使用 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