動かざることバグの如し

近づきたいよ 君の理想に

MacのターミナルでCtrl+Aで行頭に瞬間移動する方法

ターミナルで行頭、行末に一発で遷移したい

前のパソコンではできてたのだが、ターミナル上で Ctrl + A を同時押しすると入力行の先頭にジャンプできた。 また Ctrl + E で行末に移動できて非常に便利だったのだがPCとか環境変えたタイミングでその設定が消えた。

てっきりitem2のショートカットキーの設定かと思っていたのだが、実はzshのショートカットキーだった

なぜ今までできていたのか

実は個別に設定しなくてもzshにはいくつかのショートカットキーテンプレートがある。

bindkey -e  # emacsモードで使う
bindkey -a  # vicmdモード
bindkey -v # viinsモード

このなかで、自分がやりたかった行頭行末移動ショートカットキーがデフォルトで設定されているのはemacsモードのみ。

なんかの拍子でemacモードになり、その結果行頭行末移動ショートカットキーの恩恵を受けられていたというわけ。

設定方法

じゃあ bindkey -e でめでたしめでたしと言いたいところだが、そもそもこの機能を今日知ったし、他にも得体のしれないショートカットキーが

潜在的に設定されていると考えると衛生的に良くない。

そこで今回はテンプレートは使わず、個別に設定することにした

.zshrcに以下追記

bindkey -d  # キーバインドをリセット
bindkey "^A" beginning-of-line
bindkey "^E" end-of-line

これで source .zshrc すれば Ctrl + A で入力行の先頭へ、Ctrl + E で行末に瞬間移動できる。やったね