bar_1

contents_map

2014年4月24日木曜日

Mac のターミナルの Bash に単語単位カーソル移動のキーバインド設定をする


以前 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 の場合、以下のように行う:


  1. メニューの iTerm > Preferences... を選択する

  2. Preferences ウィンドウが出るので、 Keys ボタン (上段に配置されている General, Appearance, Profiles, Keys, Pointer, Arrangements の 6 つのボタンの中の右から 3 番目) を押す。

  3. メインペインの右側ペインに Global Shortcut Keys が表示される。
    この中の追加 ([+]) ボタン (Global Shortcut Keys の一番下にある3つのボタンの一番左) を押す

  4. メインペインに、ぺろっとウィンドウが出現する。
    ここにはKeybord Shortcut 入力欄と Action の選択リストがある。
    Action のリストは最初 Ignore になっているから、Send Escape Sequence (たくさん
    表示される項目のうち、一番下から 6 番目) に変更する

  5. そうするとぺろっと出ているウィンドウの中身に ESC+という入力欄が増える。
    この中に、f と入力する

  6. 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 キーを使用」チェックを入れるだけでよい。


  1. Terminal.app 起動後、メニューのターミナル > 環境設定... を選択する

  2. 設定ウィンドウが表示される。上段の設定を押下する

  3. メインペインの右側ペイン上段、キーボードを押下

  4. すると、キーとアクションの一覧が表示されるが、このときリストの下にある「メタキーとして option キーを使用」のチェックボックスを、チェックする

これだけ。

まとめ



  • Mac の Bash で、単語単位のカーソル移動を Opt+f, Opt+b で行うように設定できた

  • コンソール利用時の単語単位カーソル移動を、Bash の設定でなく、ターミナル側の設定で行う方法を示した

  • ターミナル・ソフトは、iTerm2.app と Terminal.app (ターミナル.app) を対象とした

  • Bash の設定追加は一切ない

References





0 件のコメント:

コメントを投稿

何かありましたら、どうぞ: