以前 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 件のコメント:
コメントを投稿
何かありましたら、どうぞ: