検索条件
全1件
(1/1ページ)
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とは共有できないと思う。知らんけど。
.zshrcを作っているため、これを判断できたという話 ↩