VSCodeのターミナルでctrl-pが効かない時の対処法

背景

前回から引き続きVSCodeでおかしな挙動になりました。

VSCodeのターミナルはVSCode内でシェルを使えるので重宝しています。ここでコマンドを実行したりするので、ctrl-p、ctrl-n, ctrl-rはよく利用します。

新しいMacに変えて、VSCodeのターミナルでctrl-pを入力すると、

1
^P

とだけ表示されるようになってしまいました。これはめちゃくちゃ不便…シェルをちゃんと利用したいです。ということで対応方法を記しておきます。

zshの問題かどうかの確認

まずはシェルの問題なのかどうかを確認するため、いつも使っているterminalで確認してみようと思います。

普段使っているterminalソフトはiterm2です。では入力してみましょう。

1
$ ^P^P^P

ダメですね…この問題はVSCodeの問題ではなく、シェルが変わったことによるもののようです。

ググってみると、同じような目に合っている人が何名かいらっしゃるようです。対応方法としては、.zshrc

1
bindkey -e

を実行してシェルを再起動するといけるようです。やってみましょう。

1
2
3
4
5
6
7
8
$ ^P^P^P
# この時点ではまだダメ
$ vi ~/.zshrc
# bindkey -eを追記
$ exec $SHELL -l
$
$ exec $SHELL -l
# ctrl-pで以前実行したコマンドが表示できた

VSCodeのターミナルでもシェルを再起動することでctrl-pを入力すると前のコマンドが表示されるようになります。

まとめ

zshに不慣れで、今までbashでいいって思っていたのですが、これを機にzshについてしっかりと理解していこうと思いました。