2026/06/23(火)MSYS2のGitを高速化する
MSYS2のGitって遅いよな~とつぶやいていたら公式から早くする方法があるよと紹介されたので、その時にやったこと。
この手順は私個人の環境に深く紐づいている。
確認環境
| Env | Ver |
|---|---|
| MSYS2 | msys2-x86_64-20260322 |
手順
- 起動スクリプトを直す
@echo off -set MSYSTEM=MSYS +set MSYSTEM=UCRT64 set MSYS2_PATH_TYPE=inherit set CHERE_INVOKING=1 C:\env\msys64\usr\bin\zsh.exe -l %* - パッケージのアップグレードを行う
pacman -Syu - もっかいやる
pacman -Syu - 既存のgitを消す
pacman -S git - UCRT用のgitを入れる
pacman -S mingw-w64-ucrt-x86_64-git - MSYS2用のGitプロンプトを廃止
- MSYS2ではWindowsのGitを使用しており、プロンプトを出すためだけにMSYS2のGitを使っていたが、これをやめた
参考リンク
- Native Git Now Available in MSYS2
- 倍速くらいになると書かれている
あとがき
Windows側に入ってるGit for windowsも消していい気がしてきた。まぁそもそもGit作業は今のところUbuntu実機で行っている関係もあり、滅多に使わないのだが…。ただVSCodeでパスフレーズ付きのカギを扱うときにはあった方が良さそうだし、コミット用にはあった方が良さそうな気もする。
しかし過去情報の断面を残したいがために、出来るだけ過去記事の状態を保っているが、MECEでなくなりすぎていて大変なので、そろそろWiki的な何かを作った方がいい気がしてきた。
絶対に次にフルセットアップするときにこの状態に戻せない気がしている。
ところでMSYS2公式から助言をもらえたのはFediverseをやっていたお陰な気がするので、これはとても良い出来事だったと思う。
実行環境的にMSYSはCygwinでUCRT64はWindowsネイティブで速そうなので実行環境はMSYSTEMよりUCRT64のがいいのかなとか思った。
2026/04/22(水)WindowsTerminalとVSCodeからMSYS2のzshでHomeキーやEndキーが効かなくなっていた問題を対応した
投稿日:
起きていた問題
WindowsTerminalやVSCodeでMSYS2のzshを使用しているときにHome, Endを押しても.zshrcで定義したコマンドが発動しない状態で、WindowsTerminalではブザーマークが表示される状態だった。
msys2-x86_64-20210725では起きていなかったはずだが、msys2-x86_64-20260322では起きていた。
問題が起きていた時の.zshrc上の定義
# Home
bindkey "\e[H" beginning-of-line
# End
bindkey "\e[F" end-of-line
解決した方法
.zshrc上の定義を以下に変更した。
# Home
bindkey "^[[H" beginning-of-line
# End
bindkey "^[[F" end-of-line
変更差分
# Home
-bindkey "\e[H" beginning-of-line
+bindkey "^[[H" beginning-of-line
# End
-bindkey "\e[F" end-of-line
+bindkey "^[[F" end-of-line
あとがき
ググっても当該現象が引っかからず(最近のGoogleはアホである)、Claude Opus 4.6に調べさせても見当違いの結果しか返ってこなかったが、GitHubのIssueを漁ったところ、Shift+Arrow keys insert characters in WSL/Bash; Windows Terminal rewrites explicit selection keybindings to "id": null #18921というものがあり、そのIssueに貼ってあった設定コメントに、動きそうなコードがあったため、試してみたら動いたというのが解決の道筋である。
# Home/End (both CSI and SS3) bindkey -M emacs '^[[H' _home_nosel bindkey -M emacs '^[OH' _home_nosel bindkey -M emacs '^[[F' _end_nosel bindkey -M emacs '^[OF' _end_nosel
これで動くなら -M emacs を抜いて、_home_noselのアサインを変えればいいだけの話である。^[OHと'^[OF'はLinux用[1]なのでMSYS2では考慮しなくてよいから、結果として前述にある「解決した方法」の内容でよくなるという寸法だ。
参考までにFreeBSDと同じコードになっているため、FreeBSDと設定を共有できる。なお、少なくともUbuntuとは異なるため、Linuxとは共有できないと思う。知らんけど。
- 私はMSYS2, FreeBSD, Linux用の
.zshrcを作っているため、これを判断できたという話 ↩


