ちなみに

火曜日の空は僕を押しつぶした。

zshのキーバインディング

社内でVSCodeのターミナルで ^A^A^A みたいになって困るみたいな話があって気になったので調べてみた。

In addition to these names, either ‘emacs’ or ‘viins’ is also linked to the name ‘main’. If one of the VISUAL or EDITOR environment variables contain the string ‘vi’ when the shell starts up then it will be ‘viins’, otherwise it will be ‘emacs’. bindkey’s -e and -v options provide a convenient way to override this default choice.

zsh.sourceforge.net

知らなかったけど zleEDITOR 環境変数を読んで良い感じにキーバインディングを判定してくれるらしい。

つまり EDITOR=vim だけ書いておいて、 bindkey -e を書いてないと、ログインシェル以外を起動したときに Emacs キーバンドが使えなくて ^A^H^H みたいな文字列を眺めることになる。 エディターだと Vim キーバインドなのにそれ以外は Emacs キーバインドなのが悪いんだけれど、そういう人は多そう。

具体的にはログインシェルから別プロセスで zsh を起動すると急にバインディングが変わって困る。 他にもVSCodeのターミナルで困る。VSCode環境変数(起動方法によってどこから引き継ぐかは変わる)を引き継いでくれるので EDITOR を設定していると bindkey -v 相当で zle が起動してしまう。

blog.nishimu.land

これをやっているときに一瞬ハマってしまったが深追いしなかったので今回調べてみてやっとすっきりした。