ターミナルの出力をフィルタリングしてくれるpecoをMacでインストールしたのですが、カーソルキー(矢印キー)を使うと、下記のように表示がバグりました:
入力 | pecoの入力ラインに表示される出力 |
---|---|
↑ (上キー) | [A |
↓ (下キー) | [B |
→ (右キー) | [C |
← (左キー) | [D |
調べた結果、iTerm2の設定が悪かったようなので、それを直す方法をシェアします。
環境(この話の前提)
- OS X El Capitan 10.11.6
- iTerm2 3.0.9
- zsh 5.2 (Homebrewで入れたもの)
原因
自分のケースでは、実際に叩いているキーと、ターミナルがプログラムに送るコードが違うことが原因でした。
FAQ - iTerm2 - macOS Terminal Replacement
Q: Why my arrow/HOME/END keys are not working?
A: When the terminal type of your sessions is set to one of those "xterm" types, iTerm2 handles the arrow keys, the home key, and the end key in a special way.
つまり、 iTerm2で「Terminal Type」を「xterm」(あるいはxterm-256colorなど)にすると、矢印キーとHomeキーとEndキーが、特殊な形でプログラムに送信される 、とのことです。
もっと詳しい原理については下記で説明されているので、気になる方はご覧ください。
[terminal - Caret square bracket square bracket A ^[[A
- What does it mean? - Unix & Linux Stack Exchange](http://unix.stackexchange.com/questions/222901/caret-square-bracket-square-bracket-a-a-what-does-it-mean)
対処法
iTerm2のキーマップを変更します。
- 設定画面(Preferences)で下記の設定箇所に移動する:
- 「Preferences... > Profiles > (自分が使っているプロファイル) > Keys」
- 「Key Mappings」の表の下に並んでいるボタン「Load Preset...」を選択し、「Terminal.app Compatibility」に設定する。
この設定をして再びpecoを使うコマンドを叩くと、カーソルキーが使えるようになっているはずです。
以上です。