以前 Linux を使っていたとき bash で
Alt+f/Alt+b でカーソル移動できて便利でした。そこで「Mac のコンソール上でも、Bash で単語単位のカーソル移動のキーバインド設定をしたい」と思いました。調べた結果、ターミナルの設定により可能なことがわかりました。以下、この設定方法について説明します。対象とするターミナル・ソフトは、iTerm2 と Terminal です。Background
最初に調べたところ、[bash のデフォルトの設定で、
M-f/M-b (M- は Metaキーのことで実際は ESC キーを押せばいい) で動くことになっている][1]。だけども ESC はさすがにやや押しにくいので、Opt+f (Opt は Mac 純正のキーボードなら option キー。USB で Win 互換のキーボードを使用しているなら Alt キーに同じ) とかにしたい。
[1]: “BASH(1), Reading Key Bindings”
はじめ、
man bash したりぐぐったりしていたら、方法はあることがわかった (stty, bind コマンドを使う、もしくは .inputrc に書く)。この方法に従って、bind コマンドで、bash の設定である backward-word, forward-word に対応するキー・シーケンスを変えてみることを試みた。だけど、どうもうまくいかない。
どうやら、ターミナル・ソフト (Terminal.app や iTerm2.app) の方で、キー入力を食ってしまっていたことがわかった。
なので、結論としては、ここではターミナル・ソフトの設定が必要ということになりました。こちらのほうが、カンタンかも。
iTerm2 の場合の設定方法
コンソールでキーを入力している時に、
Opt+f が押された時に、Send ^[ f (ESC に続いて f を送出) するよう、ターミナルソフトを設定してやればいい。
iTerm2 の場合、以下のように行う:
- メニューの
iTerm > Preferences...を選択する Preferencesウィンドウが出るので、Keysボタン (上段に配置されているGeneral,Appearance,Profiles,Keys,Pointer,Arrangementsの 6 つのボタンの中の右から 3 番目) を押す。- メインペインの右側ペインに
Global Shortcut Keysが表示される。
この中の追加 ([+]) ボタン (Global Shortcut Keys の一番下にある3つのボタンの一番左) を押す - メインペインに、ぺろっとウィンドウが出現する。
ここにはKeybord Shortcut入力欄とActionの選択リストがある。
Action のリストは最初 Ignore になっているから、Send Escape Sequence(たくさん
表示される項目のうち、一番下から 6 番目) に変更する - そうするとぺろっと出ているウィンドウの中身に
ESC+という入力欄が増える。
この中に、fと入力する - Keyboard Shortcut の入力欄で、設定したいキー・シーケンスを入力する:
Opt+f
この設定で、
Opt+f を入力すると Esc+f が送出され、Bash のデフォの設定により forward-word のコマンドが実行される。Opt+b の設定も同様にして、Opt+b が押された時に、Send ^[ b するようにしてやればいい。Terminal.app の場合の設定方法
Mac OSX のデフォルトのターミナルソフト:
Terminal.app (ターミナル.app) の場合は、次のようにして、「メタキーとして option キーを使用」チェックを入れるだけでよい。- Terminal.app 起動後、メニューの
ターミナル>環境設定...を選択する - 設定ウィンドウが表示される。上段の設定を押下する
- メインペインの右側ペイン上段、キーボードを押下
- すると、キーとアクションの一覧が表示されるが、このときリストの下にある「メタキーとして option キーを使用」のチェックボックスを、チェックする
これだけ。
まとめ
- Mac の Bash で、単語単位のカーソル移動を
Opt+f,Opt+bで行うように設定できた - コンソール利用時の単語単位カーソル移動を、Bash の設定でなく、ターミナル側の設定で行う方法を示した
- ターミナル・ソフトは、iTerm2.app と Terminal.app (ターミナル.app) を対象とした
- Bash の設定追加は一切ない
References
- stackoverflow, Bash CTRL to move cursor between words/strings; Feb. 17th, 2011.
- rcmdnk, MacのiTerm(ターミナル)でのメタキー、エスケープシーケンスの設定, “メタキー/ESCについて: iTermでそれらのキーを送る設定も”; May. 30th, 2013.
0 件のコメント:
コメントを投稿
何かありましたら、どうぞ: