VSCodeのターミナルでCtrl+Aによる先頭への移動ができなくなった話

1 min read読了の目安(約1700字

ある日突然、vscodeのターミナルでCtrl+Aを使った先頭への移動ができなくなり、代わりに ^A^ が出力されるようになりました、カワイイ。

MacにプリインストールされているTerminal.appやiTerm.appでは先頭への移動はできていて影響範囲はvscodeだけだったので別のショートカットと衝突でもしたのかなと思い、ショートカット一覧ページの検索窓に Ctrl+a って打ってみました。(ショートカット一覧ページは Cmd+Shift+P で出てきた窓に Preferences: Open Keyboard Shortcuts と打ったら出てきます)

デフォルト以外のキーバインド以外にvimのプラグインによる別のショートカット登録がありました。

犯人見つけたぜ!と意気込んで、このショートカットをRemoveしてvscodeを再起動、そしてターミナルでCtrl+Aを打ってみると

m9(^Д^)

問題の切り分けのためにvscodeにインストールしているextensionを全部disableしてみました。Cmd+Shift+P で出てきた窓に Extensions: Disable All Installed Extensions と打ってEnter、そしてvscodeを再起動するすべてのextensionが無効化されます。(無効化したextensionは Extensions: Enable All Extensions を実行すると有効化できます)

そしてターミナルでCtrl+Aを打ってみると

🥺🥺🥺

これはvscodeの問題ではなさそうと思い色々調べてみると下記の記事にあたりました。

https://sotarok.hatenablog.com/entry/20080926/1222368908

とりあえず同じことをやってみるかーと思い .zshrcbindkey -e を入れて source ~/.zshrc を実行してCtrl+Aをすると先頭に移動できました!!

解決はしたのですが原因がわからないので気になってもうちょっと調べてみました。
まずvscodeのターミナルとTerminal.appやiTerm.appで実は違うzshを実行しているのではと思い、which zsh を実行してみるとどちらも /usr/local/bin/zsh を返してきた、その線はなさそうです。
vscodeのターミナルは統合ターミナルと呼ばれているらしく色々な記事を読むとこの統合ターミナルはプリインストールのターミナルなどとは起動時に実行される処理が違うように感じました。(エスパーですが)

https://qiita.com/satokaz/items/6a6a0d9b6489ec2d1803#統合ターミナル関連
https://code.visualstudio.com/docs/editor/integrated-terminal

これによって bindkey -e を入れないとCtrl+Aによって先頭に移動できないようになっていたのかなとか想像してます。

結論

よくわからんけど、とりあえず bindkey -e 入れよう。