はじめに
今回はiTerm2にて「左Option」+「←」「→」で単語移動を可能にする設定を行いたいと思います。
そもそも何故このキーマッピングが良いのかという話ですが、Macが標準ではiTerm2以外の操作で単語移動を「Option」+「←」「→」に割り当てているケースが多く汎用性が高いからです。
前提
ここでは下記のツールを使用しているものとして話します。
- シェル
- zsh
- 仮想端末
- iTerm2
iTerm2で設定すると失敗した
ググるとよく出てくるのがiTerm2の設定から「左Option」+「←」「→」を、iTerm2の単語移動の標準ショートカットキーである「Escape」+「f」「b」にリマップするという方法です。
自分はこの設定では上手くいきませんでした。
恐らくこの記事を読んでいる皆様も同じ結果だったのではないでしょうか。
具体的なエラー内容としては[C
とか[D
が標準出力に表示されるだけで単語移動が行われなかったのです。
.zshrcでキーバインドする
そこで今回はiTerm2からリマップするのを諦めて、zshにキーバインドを設定する方法をとったところ動作しました。
下記の設定を.zshrc
に追記して下さい。
bindkey '[C' forward-word
bindkey '[D' backward-word
保存したらiTerm2を再起動するか下記のコマンドを実行してから、「左Option」+「←」「→」を入力してみて下さい。
$ source ~/.zshrc
これで多分、単語移動(前後)が可能になっていることと思います。
全削除のショートカットキーについて
ここからは蛇足になりますが、zshのショートカットキーの「Ctrl」+「u」の挙動についてもこの機会に見直してみます。
bashとzshのショートカットキーで妙に異なるのが、bashはカーソル位置から左側を全削除し、zshはコマンドライン全体を削除します。
個人的にはbashの方が断然使いやすいので、.zshrc
に下記を追記して修正してしまいましょう。
bindkey \^U backward-kill-line
ちなみに左側だけが全削除される方が便利な理由は、右側だけを全削除するショートカットキー(「Ctrl」+「k」)もあるので組み合わせた方が対応力が上がると考えているからです。
以上です。
終わりに
ショートカットキー以外にもシェルスクリプトの条件式が微妙に違ったりして、その都度調べ直す手間が発生するの面倒ですよね。
シェル毎の差分は何故生じてしまうのでしょうか……