Windows
msys2
VSCode
VisualStudioCode

Windows環境でVSCode+MSYSで快適に使う方法

記事の内容に不備 (@lunateaさん、@yumetodoさんにご指摘いただきました) & @yumetodo さんの過去投稿記事とネタかぶりがありましたので、以下記事は参考にしないでください……orz

VSCodeを使うときに統合ターミナル画面が便利なので常時開きながら使っています。
MacなりLinuxなりだとBashなりなんなりとまともなターミナルが使えるのですが、Windows7だとデフォルトでcmd.exeとなるのが辛いところ。
なのでMSYS2を入れて快適なターミナル環境で使おうとしたけれど、ちょっとハマりどころがあるので共有します。

必要なもの

手順

  1. VSCodeはインストールされているものとします

  2. MSYS2をC:\msys64にインストールします

  3. VSCodeの統合ターミナル機能で利用するシェルの指定をします

ユーザ設定に素直に設定すると以下のようになると思いますが

{
    ...
    "terminal.integrated.shell.windows": "C:\\msys64\\msys2.exe",
    ...
}

これでは上手く動作しません。

で、どうするかというと


(12/18追記)

ここから↓ よろしくないようです。

setting.json
{
    ...
    "terminal.integrated.shell.windows": "C:\\msys64\\vscode_bash.bat",
    ...
}

と設定して、C:\msys64フォルダの下に

vscode_bash.bat
@echo off
set CHERE_INVOKING=1 set MSYSTEM=MINGW64 & C:\\msys64\\usr\\bin\\bash.exe --login -i

というbatファイルを用意します。

これで無事VSCodeの統合ターミナル機能からmsys2を呼ぶことが出来るようになります。

ここまで↑ よろしくないようです。


コメント欄で @lunatea さん、 @yumetodo さんに指摘していただいたところによると、引数なども指定できるようでした。

setting.json
{
    ...

    "terminal.integrated.env.windows": {
        "CHERE_INVOKING": 1,
        "MSYSTEM": "MINGW64"
    },
    "terminal.integrated.setLocaleVariables": true,
    "terminal.integrated.shell.windows": "C:\\msys64\\usr\\bin\\bash.exe",
    "terminal.integrated.shellArgs.windows": [
        "-i"
    ],

    ...
}

で行けるようです。

あと"terminal.integrated.setLocaleVariables": trueを指定することでpacman等が日本語表示されました。

詳細は @yumetodo さんの「Visual Studio Code 15.1の統合シェルをMSYS2のbashにする」をご参照ください。


それでは良いVSCodeライフを!