WSL 2 与 Visual Studio Code
2019 年 9 月 3 日,作者:Matt Hernandez,@fiveisprime
自从 Windows Subsystem for Linux 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 倍 - 以及完整的系统调用能力。您的模块将安装得更快,您的仓库将克隆得更快,并且您最喜欢的库将可靠地工作。性能的提高意味着您还可以运行替代 Shell,例如 Zsh,甚至可以使用您最喜欢的 Node.js 版本管理实用程序。
WSL 2 与 Visual Studio Code
如果您正在跟进,请确保您已选择加入 Windows 预览体验计划并启用 WSL 2。您可以在 WSL 2 安装说明中了解更多关于如何开始的信息。
您还需要安装 Visual Studio Code 和 WSL 扩展。或者,查看 Beta 版 Windows 终端,以获得 Windows 上最佳的终端体验。
通过启动 Windows 终端并创建一个新的 WSL 选项卡,或者通过启动您安装的 Linux 发行版来打开 WSL。您也可以通过在终端中输入 wsl
从命令提示符或 PowerShell 直接切换到 Linux - 这只是 WSL 如此深入集成到 Windows 的众多方式之一。您还可以使用 WSL 内联来做一些荒谬的事情,例如…
从您的终端,使用 WSL 中的 code .
启动 Visual Studio Code。您甚至可以使用 wsl code .
内联切换到 Linux,启动 VS Code,然后返回到您的 Windows Shell。 😏
就个人而言,我在 Windows 上 100% 的开发都使用 WSL 2 - 所有开发工具(如 Git 和 Node.js)都安装在我的 Linux 环境中。查看这篇使用 WSL 和 Visual Studio Code 进行 Linux 开发的技巧和窍门 帖子,了解更多关于在 WSL 中自定义 VS Code 以满足您的需求的信息。
这是我的设置的概览。
请注意,在屏幕截图中,我已连接到我的 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