続 iTerm2でHexコードを送ってfishでCmd+[とCmd+]をディレクトリの戻る進むに対応させる
概要
以前の記事でfishのbindを利用して対応しました。
このbindによってペーストが壊れてしまい対応が難しいとわかったので
別の方法でiTerm2を使って対応しました。
経緯
ここで貼り付けた文字列が壊れると質問したのですが
bind \e\[ 'do something'
がbindで設定を禁止させるべきかもと回答を頂きました。
現状では設定しなのがよいとのことなので、
fishで既にprevd-or-backward-wordがbindされているキーを
iTerm2で入力したCmd+[と]を別のキーとして入力することにしてみました。
設定
fishのbind確認
fishでnextd-or-forward-wordがbindされているキーを確認してみましょう。
$ bind --key | grep nextd-or-forward-word bind --preset \e\eOC nextd-or-forward-word bind --preset \e\e\[C nextd-or-forward-word bind --preset \eO3C nextd-or-forward-word bind --preset \e\[3C nextd-or-forward-word bind --preset \e\[1\;3C nextd-or-forward-word bind --preset \e\[1\;9C nextd-or-forward-word
次にprevd-or-backward-wordを確認します。
$ bind --key | grep prevd-or-backward-word bind --preset \e\eOD prevd-or-backward-word bind --preset \e\e\[D prevd-or-backward-word bind --preset \eO3D prevd-or-backward-word bind --preset \e\[3D prevd-or-backward-word bind --preset \e\[1\;3D prevd-or-backward-word bind --preset \e\[1\;9D prevd-or-backward-word
今回はAlt+←と→でディレクトリの行き来ができるとわかったので活用したいと思います。 Alt+← が \e[1\;3D で Alt+→ が \e[1\;3C です。
これを踏まえてiTerm2の設定を行います。
いくつか設定されていますが、このままだと何が設定されているのかよくわからない状態です。
iTerm2の設定
Cmd+[と]は他のキーに割り当ててもよいので
既にバインドされているキーに割り当ててしまいましょう。
iTerm2のPreferencesからProfilesのタブを選択して
Keysのタブを選択します。ここまでは以前と同じです。
fishにはbindするキーを確認するコマンド fish_key_reader があります。
Alt+← を確認すると
$ fish_key_reader Press a key hex: 1B char: \c[ (or \e) ( 0.144 ms) hex: 5B char: [ ( 0.084 ms) hex: 31 char: 1 ( 0.130 ms) hex: 3B char: ; ( 0.130 ms) hex: 33 char: 3 ( 0.077 ms) hex: 44 char: D bind \e\[1\;3D 'do something'
Alt+→を確認すると
$ fish_key_reader Press a key hex: 1B char: \c[ (or \e) ( 0.122 ms) hex: 5B char: [ ( 0.118 ms) hex: 31 char: 1 ( 0.032 ms) hex: 3B char: ; ( 0.056 ms) hex: 33 char: 3 ( 0.159 ms) hex: 43 char: C bind \e\[1\;3C 'do something'
1B 5B 31 3B 33 44
1B 5B 31 3B 33 43
だとわかるのでiTerm2に設定します。 こんな感じです。
まとめ
これらの設定で対応ディレクトリ移動が少し快適になりました。
fishで今後 "\e[" のbindは禁止されるかもしれませんが
いい方法で解決してくれると嬉しいです。