WSL 2 与 Visual Studio Code

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

适用于 Linux 的 Windows 子系统 2 (WSL 2) 的首个测试版发布已经过去几个月了,我想借此机会分享一下它的相关内容,以及它将如何帮助您提高工作效率。自该版本登陆 Windows Insider 以来,我一直都在使用它,并很快将我的日常开发任务完全转移到了 WSL 2 上。

WSL 2 的变化

第一版 WSL 在 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 Insider 计划并启用了 WSL 2。您可以从 WSL 2 安装指南中了解更多入门信息。

您还需要安装 Visual Studio CodeWSL 扩展。此外,还可以试试 Windows Terminal 测试版,以在 Windows 上获得最佳的终端体验。

WSL extension

打开 WSL 的方式很简单:启动 Windows Terminal 并新建一个 WSL 标签页,或者直接启动您安装的 Linux 发行版。您也可以直接在命令提示符或 PowerShell 中通过输入 wsl 命令切换到 Linux——这只是 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 平台的开源开发者,就会明白这有多重要。

我所有喜爱的扩展程序都能正常工作并指向正确的环境。例如,源代码管理视图正显示我项目中使用的 Git 版本(该版本安装在 WSL 2 中),而 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

© . This site is unofficial and not affiliated with Microsoft.