VSCodeのターミナルでCtrl+Aによる先頭への移動ができなくなった話
ある日突然、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の問題ではなさそうと思い色々調べてみると下記の記事にあたりました。
とりあえず同じことをやってみるかーと思い .zshrc
に bindkey -e
を入れて source ~/.zshrc
を実行してCtrl+Aをすると先頭に移動できました!!
解決はしたのですが原因がわからないので気になってもうちょっと調べてみました。
まずvscodeのターミナルとTerminal.appやiTerm.appで実は違うzshを実行しているのではと思い、which zsh
を実行してみるとどちらも /usr/local/bin/zsh
を返してきた、その線はなさそうです。
vscodeのターミナルは統合ターミナルと呼ばれているらしく色々な記事を読むとこの統合ターミナルはプリインストールのターミナルなどとは起動時に実行される処理が違うように感じました。(エスパーですが)
これによって bindkey -e
を入れないとCtrl+Aによって先頭に移動できないようになっていたのかなとか想像してます。
結論
よくわからんけど、とりあえず bindkey -e
入れよう。
Discussion