TL;DR
- powerline にgitの処理が入っている
- WSLはwindows側のディレクトリへのgitコマンドめっちゃ遅い
- よってpowerlineを使うテーマでgitをOffにするか、WSLのファイルシステム内にリポジトリを置けばよい
WSLとは
- Windows Subsystem for Linuxのこと
- windowsでubuntuとか簡単に動かせる
- Windowsのファイルシステムにはディレクトリ共有してアクセスしている。
- これが根本の遅い原因
- これとgitの仕組みが相性悪い
powerline
- temrinalをイカした感じにしてくれるやつ
- powerline themeとかも多く合って、zsh/fishなら簡単に導入できる
- gitの情報とかも出してくれるので、かなりありがたい
- だが、gitの情報を出すために、temrinal表示のたびに内部でgitコマンドを打っている様子。
使用環境
- WSL2 ubuntu16.04 + fish
- 参照: WSLでお手軽にオシャレfish環境構築 - Qiita
- themeはbobthefishを入れた
- WSL2 ubuntu18.04 + zsh
- 参照: [WSL2] Win10でzsh+preztoを使ってPowerline環境を作る
- themeはagnoster
どれくらい遅いの
- fish + bobthefish のデフォルトの設定で、/mnt/c/User/{ユーザー} 以下のリポジトリにアクセス
- 8MBぐらいのリポジトリで20秒ぐらいかかる
- これが、コマンド打つたびにかかる
- ボリュームのあるリポジトリだともう使い物にならない
- zsh + agnoster も同様
解決策① gitの読み込みをOffにする
-
fish + bobthefish の場合、テーマの設定でgitの使用をoffにできる
-
~/.config/fish/config.fish を編集。
-
set -g theme_display_git no
を記載 -
git関連はほかにもあるのでbobthefish 参照
- けど
theme_display_git no
以外はあまり効果ない
- けど
-
自分が設定したやつ
-
cat ~/.config/fish/config.fish
set -g theme_newline_cursor yes
set -g theme_display_git_master_branch yes
set -g theme_color_scheme dracula
set -g theme_use_abbreviated_branch_name yes
set -g fish_prompt_pwd_dir_length 0
set -g theme_show_exit_status yes
set -g theme_title_use_abbreviated_path no
set -g theme_display_git no
set -g theme_display_git_dirty no
set -g theme_display_git_untracked no
set -g theme_display_git_ahead_verbose no
set -g theme_display_git_dirty_verbose no
set -g theme_display_git_stashed_verbose no
* 結果: 一応使えるレベルになったが、git見れないのであまり使い道ない
# 解決策② WSLのファイルシステム内にリポジトリ置く
* これが一番シンプルかつ早い
* 今までWindowsファイルシステム内にリポジトリ置いてた人は移行がつらいかも
### VScodeとか使っているんですけど。。って人は
* Remote Development入れて、WSL内で `code .` って打つと幸せになれるかも
* 拡張機能とかは入れ直しになるけど、ほとんどLocalでの使用感と変わらずできる。おすすめ
* [VS Code Remote Development](https://code.visualstudio.com/docs/remote/remote-overview)
* またはWSLのディレクトリにWindowsでアクセスしてVScodeで開くのもあり
* WSL内で `explorer.exe .` でカレントディレクトリをエクスプローラーで表示
* これでWSL内のディレクトリにWindowsでアクセスできる
# 感想
* WSLかなりいいけど、ここだけネックですね。。。
* 仕組み上仕方ない感じあるので、なんとかこれで我慢
* 何かほかのイケてる解決策されば教えてください!
# おまけ
* powerline使うならRustで書いたpowerline-rsが早くておすすめ。↑で書いたテーマよりかなりサクサク
* https://github.com/jD91mZM2/powerline-rs