もふふのはてな

メインのブログに書くほどではない雑多な記事を置く場所

VSCode + WSL

この記事はQiitaから移転されました。

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

追記

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を指定します。

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

Git

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

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

C/C++ IntelliSense

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

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

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

Rust Language Server (RLS)

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

"rust.useWSL": true

rubocop

:thinking:

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

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

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

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

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

@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があるディレクトを指定します。

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