LoginSignup
3
1

More than 3 years have passed since last update.

WSL2に移行して困っている話(未解決)

Posted at

背景

背景

以前にWSL2へ移行したときの記録としてこんな記事を書いた.
WSL2に切り替えたらhomeディレクトリで難儀した

その後しばらく使ってみたわけだが,そうしたらhomeディレクトリでは難儀しなくなったのだが,今度は代わりにVSCodeとの相互運用で難儀することになってしまった.現状良い解決策がないので,どうしたものかなぁと思いながら記事を書いている.

本題

WSL2にすると,バックグラウンドでLinuxの仮想環境が立ち上がり,ホストマシンであるWindowsとはネットワーク越しの通信を行うような形で相互接続を確立しているというのは前の記事で触れたとおりだ.それ自体に問題はないのだが,ことVSCodeと相互利用をするとなると話が変わってくる.
念のためにWindows配下に移動させて同じプロジェクトファイルで検証してみたが,問題無く同じWindowで開かれたので,問題はネットワークドライブのみで起きることは間違いない.

ターミナルからコードを開くと別Windowが開かれる問題

VSCode使いな開発者諸兄はおそらく普段からVSCode付属のターミナルを使っていることだろう.そして,デバッグではそのターミナルで表示されたエラーコードをCtrl+クリックで開いていることだと思う.(そうであってくれ)
Ctrl+クリックは地味に便利で,どのコードのどの部分か読まなくても問題の箇所へ飛ばしてくれる.慣れてしまうと自分でその箇所を開くのが面倒で仕方ない.しかし,VSCodeのターミナルの仕様(?)としてネットワークドライブにあるファイルを開く場合には別Windowで開くという挙動をするのだ.デバッグをするときにはコードの修正とターミナルでの実行を何度も反復することになるため,そのたびに新しいWindowがガンガン開いてしまうことになる.これはとてもじゃないが耐えられない.

リポジトリの状態が自動更新されない

今日日gitを使っていないweb開発者はそうそういないんじゃないかと個人的には思っているぐらい,僕はgitに依存していて,VSCodeもデフォルトでgitの機能が盛り込まれている.しかし,リポジトリの状態がVSCodeを開いたときのみしか読み込まれないという問題が発生する.
例えば,VSCodeの左下に表示されるアクティブブランチ.これはブランチを切り替えても追従してくれず,毎回飽きもせず僕を攪乱しようとしている.他にも,左側に表示されるエクスプローラも同じような問題が起きる.どのファイルを編集したか,どのファイルがコンフリクトを起こしているかなどなど,記号の意味を理解すればかなり有力な表示にも関わらず,こちらも一切アップデートされない.何なら手動で更新ボタンを押しても反応しない.ファイルの削除や追加に関しては手動更新で反応するのだが・・・

現状で取れる解決策

一応3つほど解決策を考えてはいるのだが,どれも欠点がデカすぎて,まだストレスためながらWSL2で使う方が良いのでは無いかという結論に至っている.

  1. WSL2からWSLに戻す まだWSL2に変えるには早すぎたんだ・・・ でもこの方法だと,dockerをWSLから良い感じに使いたいという要求には目を瞑ることになってしまうので,開発全体で掛かるコストとしてはバカにならないのでやりたくない.
  2. 速度の低下に目を瞑ってWindows配下にプロジェクトファイルを置く これについては全てのコマンドが遅くなるので,果たして現実的な方法と呼べるのだろうか・・・?これをやるぐらいならPowerShellをbash風に魔改造して使う方がまだ現実的な気がしている.
  3. プロジェクトファイルをWindows配下とLinux配下で分身させる プロジェクトファイルをWindows配下とLinux配下で分身させて,何かをトリガーにしてコピーをするという方法も考えられる.無駄にこれのための設定が必要だし,そもそもVSCodeのターミナルからCtrl+クリックでソースに飛べないという問題が解決していない・・・

なんとかなりませんかね?Microsoftさん

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1