Edited at

VSCode + WSL

Windows Subsystem for Linux(WSL)で構築した開発環境をWindowsのVSCodeから利用するための覚え書き。解説というよりは試行錯誤の記録環境構築を終えた項目を追記していきます。

追記

VSCodeの更新によりRemote - WSL拡張を使用できるようになりました。これにより、言語ごとにVSCode + WSL向けの環境を構築する必要がなくなります。


WSLの基本

> ...: コマンドプロンプト, $ ...: WSL)

コマンドプロンプトからの起動

> wsl

コマンドプロンプトからのコマンド実行

> wsl <command>

> wsl ls -la

WindowsとWSLのパスの変換(Windows 10 バージョン1803以降)

$ wslpath C:/users

/mnt/c/Users
$ wslpath -w /mnt/c/Users
C:\Users

Windowsから見たルートディレクトリ(<user>はWindowsのユーザ名, <...>はインストールによって異なるランダムな文字列, Ubuntuの場合)

C:/Users/<user>/AppData/Local/Packages/CanonicalGroupLimited.UbuntuonWindows_<...>/LocalState/rootfs

Linuxルート下のファイルをWindowsから変更するとファイルが壊れることがあるので注意すること。


統合ターミナル

VSCodeのユーザー設定でシェルのパスにwsl.exeを指定します。


setting.json

"terminal.integrated.shell.windows": "C:/Windows/System32/wsl.exe"



Git

WSLでgitをインストールします。WSLGitのバイナリwslgit.exeをダウンロードし適当なディレクトリに置きます。VSCodeのユーザー設定でwslgit.exeへのパスを設定します。


setting.json

"git.path": "C:/bin/wslgit.exe"



C/C++ IntelliSense

WSLでgcc, g++を、VSCodeでC/C++拡張をインストールします。

ワークスペースの設定ファイル.vscode/c_cpp_properties.jsonにWSL向けの設定を書きます。


.vscode/c_cpp_properties.json

{

"configurations": [
{
"name": "WSL",
"intelliSenseMode": "gcc-x64",
"compilerPath": "/usr/bin/gcc",
"includePath": ["${workspaceFolder}/**"],
"defines": [],
"cStandard": "c11",
"cppStandard": "c++17"
}
],
"version": 4
}


Rust Language Server (RLS)

VSCodeでRust (rls)拡張をインストールします。


setting.json

"rust.useWSL": true



rubocop

:thinking:

WSLでrubocopを、VSCodeでruby-rubocop拡張をインストールします。

WSLにインストールしたrubocopのパスを調べます。

例(rbenvを使用している場合)

$ which rubocop

/home/<user>/.rbenv/shims/rubocop

Windows側で次のようなrubocop.batファイルを作成して適当な場所に置きます。ただし~/.rbenv/shims/rubocopの部分を上で調べたパスに変更してください。


rubocop.bat

@echo off

wsl ~/.rbenv/shims/rubocop $^(echo '%*' ^| sed -e 's^|\\^|/^|g' -e 's^|\^([A-Za-z]\^)\:/\^(.*\^)^|/mnt/\L\1\E/\2^|g'^)

VSCodeのユーザー設定でrubocop.batがあるディレクトリを指定します。


setting.json

"ruby.rubocop.executePath": "c:/bin/"