在 VS Code 中试试

WSL 2 与 Visual Studio Code

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 现在提供了一个虚拟机,但这与您对虚拟机的预期体验不同。传统虚拟机可能启动缓慢且感觉孤立,而 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 扩展。此外,可以选择查看 Windows Terminal 测试版,以获得 Windows 上最佳的终端体验。

WSL extension

您可以通过启动 Windows Terminal 并创建新的 WSL 标签页,或者通过启动您安装的 Linux 发行版来打开 WSL。您也可以直接从命令提示符或 PowerShell 进入 Linux,只需在终端中输入 wsl 即可——这只是 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 上都兼容,性能卓越,开发体验无缝。

延伸阅读

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

愉快的远程编码,

Matt Hernandez,VS Code 项目经理 @fiveisprime