尝试以扩展 VS Code 中的代理模式!

将 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 预览体验计划版本并启用了 WSL 2。你可以在 WSL 2 安装说明中了解有关如何入门的更多信息。

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

WSL extension

可以通过启动 Windows 终端并创建一个新的 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