VS Code on WSL2でつまづいたこと

VS Code は WSL (WSL2) に対応しているのですが,そのまま使おうとしたら色々手こずってしまいました.

実行環境

  • Windows 10 Home
  • Intel Core i7-7700
  • RAM 16GB
  • WSL distro: Ubuntu 20.04

WSL の最初の起動時に作成するルートアカウントと別のユーザで操作しています(zsh 利用).

WSL向け拡張機能の導入

まず,VS Code を使う上で欠かせないのが WSL を利用するための拡張機能です.

Remote - WSL | Visual Studio Marketplace

この拡張機能は WSL のディストリビューション (略: distro) と VS Code の橋渡しをしてくれます,これで,起動させる distro を選択したり,distro 上にあるワークスペースを選択したりできます.

ターミナルも WSL に連携します.

WSLへの拡張機能インストール

VS Code (on Windows) に既にインストールしている拡張機能であっても,distro 上にあるプロジェクトで使いたい場合はその distro にもインストールする必要があります.

Remote - WSL が有効な状態で拡張機能パネルを開くと Windows で既にインストールしている拡張機能に Install in WSL ボタンが表示されており,Windows にインストールされているものは Local,WSL にインストールされているものは WSL として別管理になります.

ファイルを展開したときに Prettier が利かなかったりハイライトされていなかったりするときは要確認です.

VS Codeでの編集

編集して保存しようとしたら下のようなエラーが出ました.

Failed to save 'example.file': Unable to write file (No Permissions (FileSystemError): Error: EACCS: permission denied, open 'path/to/example.file')

ファイルの所有者は新たに作成したユーザに設定されていましたが,VS Code は WSL のデフォルトログインユーザだと認識しているため,所有者でないユーザの編集とみなされたようです.

ログインユーザを変更することでエラーを解消しました.

PowerShell

> ubuntu2004 config --default-user <username>

参考:Linux ディストリビューションの管理 | Microsoft Docs

Gitの利用

VS Code の Git 管理機能ももちろん使えます.デフォルトユーザ変更前は .git/HEAD を編集する権限がなかったため Permission denied になっていましたが,変更したら解消しました.

最後に

エラーに見舞われた原因の多くはログインユーザと別のユーザを作成したことに由来するものでした.

デフォルトユーザを変更することで解消できましたが,複数ユーザを使い分けるような場合は別の解決策が必要そうです.