【解決済】MSYS2 + gVim + vim-fugitive on Windows

vim-fugitive めっちゃ使いやすい。Vim のキラープラグインの1つではないかと思う。Windows での CUI 環境を MSYS2 に移行したくらいから、gVim で :GStatus が使えなくなって、CUI 版の Vim を使っていた。今回その理由に気づいたので、メモとして残しておく。

症状

元々の環境

症状

  • CUI からは、:Gstatus も動く
  • GUI からは、:Gstatus すると、/home から始まって、C: で終わる変なパスとともに、No such file or directory のエラーが表示される。

直し方だけ知りたい人は、解決策へ。

vim-fugitive がサポートする設定

ちょっと古いのだけど、vim-fugitive の作者の発言は以下。

fugitiveWinSupport.png

  1. Windows mode: msysgit/shell=cmd/noshellslash
  2. Cygwin mode: cygwin git/shell=bash/shellslash

この時点では、Git for Windows でインストールされる git と、MSYS2 でインストールできる git は同じとして扱えるだろうと思っていた。なので、1の設定をしたけど、やはりうまくいかない。

パスがおかしい、というところから、shellslash とか、shell の設定がまずいのかな?と思ったけど、直すことができず、しばらく gVim の使用はあきらめて、CUI で Vim を使っていた。

気づいた経緯

vim-plug の issue でのこの書き込みを見たのがでかい。

GitOnWindows.png

ん?と思って、自分の MSYS2 の git のバージョンを確かめてみると、

$ git --version
git version 2.15.0

お、これは・・・ MSYS2 でインストールした git も Cygwin と同じ扱いじゃん・・・ということに気づいた。そこで、gVim で 2 の設定も試してみたけど、これもだめ。たぶん、gVim は win32unix じゃない(win32unix は Cygwin の Vim が持っている feature)からなんだと思う。ということは、Git for Windows をインストールすればよいのでは?ということに思い至る。

解決策

結局どうすれば良かったのかというと、Git for Windows をインストールして、gVim からはその git を使えば良い。

UNIX ライクな環境としては、Git for Windows ではなく、pacman を使える MSYS2 にしたかったので、以下のようにした。

  • CUI: MSYS2 の Vim/MSYS2 の git/shell=bash/shellslash
  • GUI: gVim (Kaoriya)/Git for Windows の git/shell=cmd/noshellslash

CUI でも、Git for Windows の git を使うことはできるはず。

MSYS2 でインストールできる git と、Git for Windows でインストールされる git は別物だから気をつけろ。MSYS2 と Git for Windows を両方入れるのはストレージの無駄な気がするかもしれないけど現状では仕方のないことなのだと思う。

  • MSYS2 の git
    $ /usr/bin/git --version
    git version 2.15.0
  • Git for Windows の git
    $ /c/Git/bin/git --version
    git version 2.15.1.windows.2

番外編

と、ここまで書いて、ある事に気が付いた。GitHubDesktop にも git はあるはずだ、と。GitHubDesktop も使っているので、この git がもし、Git for Windows 版であれば、Git for Windows を入れる必要はない。ということで探すとありました。1.0.10 の部分は GitHubDesktop のバージョンによって変わると思うけど、ここにある。

%USERPROFILE%\AppData\Local\GitHubDesktop\app-1.0.10\resources\app\git\cmd\git.exe

GitHubDesktop の git

$ git.exe --version
git version 2.15.1.windows.1

試しに、この git.exe のパスを gVim の $PATH に追加して :Gstatus してみるとなんとちゃんと動いてくれる。

なので、インストールした Git for Windows は速攻アンインストールした。

ちなみに、上の git のパスはなんだかとても長くて嫌だったので、%USERPROFILE\AppData\Local\GitHubDesktop\app-1.0.10\resources\app\git のシンボリックリンクを適当なところに作って .gvimrc でパスを追加するようにした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です