Windows 10上のVisual Studio CodeからWSLのツールを呼び出す方法のメモ。
筆者のニーズに応じて随時更新していきます。
基本方針
- ファイルパスの変換をWindows側で行う
-
wslpath
コマンドがWSL側にしかないため - Windows側からバックスラッシュ
\\
を壊さずにWSLに文字列を渡すのが至難の業すぎるため
-
- パス変換の実装方法
- バッチファイルベース : https://github.com/Microsoft/WSL/issues/1946#issuecomment-295583000 (私が選んだ方法)
- Pythonベース : https://github.com/OhYee/WSLenv
- Rustベース : https://github.com/andy-5/wslgit
Pythonベース、Rustベースのものは応用が効くものの、手段としてでかすぎると思うので、私はバッチファイルベースのものを選択した。
具体例
ここではautopep8の例のみを挙げる。
読者が必要となるコマンドで適宜用意すれば良い。
また、引数の制約が許せばそもそも呼び出しを bash -c "%v_params%"
としてしまって万能バッチファイルとしても良いかもしれない。
autopep8
下記のバッチファイルを用意する。
バッチファイル
@echo off
set v_params=%*
set v_params=%v_params:\=/%
set v_params=%v_params:c:=/mnt/c%
set v_params=%v_params:"=\"%
@bash -c "autopep8 %v_params%"
続いて、VSCodeの設定ファイルから上記バッチファイルを指す。
設定ファイル
{
"python.formatting.autopep8Path": "C:\\Users\\user\\Tools\\wslautopep8.bat"
}
こちらの実装の割り切りポイントは、作業パスがCドライブを前提としているところ。ここを解決したい場合は前述のPythonベース、Rustベースのものを拡張して書いたほうが良いと思う。