はじめに
Hamee Advent Calendar 15日目の記事です。
bashのキーバインドを変えてターミナル操作を快適にするのが目的です。
環境
- 自分のMacでの動作を確認
- Mac OS X ver 10.9.5
- Windows未検証
やりたいこと
ターミナル上で例えば
php test.php hoge moge foo bar sample
のように、あるプログラムファイルに引数を大量に渡す場合、または
ssh 0.0.0.0 -i ~/.ssh/sample.pem
のように、あるコマンドに対して引数とオプションを大量に渡す場合
例えば上の例で言うと引数mogeの部分が間違っていて修正したい時に
ctrl + eで末尾から左キーで該当箇所に行く or ctrl + aで先頭から右キーで該当箇所に行く
という選択があるかと思うんですが、これだと右キー左キーをしばらく押さなければならず遅いですし手間です。
該当箇所にさくっと移動したいのがやりたいことです。
やること
デフォルトのbashで単語間移動ができます。
esc + fで次の単語へ移動
esc + bで前の単語へ移動
しかしこれでescを押しながらbを連打すると、一個単語が移動したところでbという文字を打ってしまいます。

更に次の単語へ行くにはescを押し直す必要があり非常に手間なのと、そもそもescというのが使いづらい。
そこでescではなくctrlに変えてしまいます。
# ctrl+fで次の単語に移動
bind '"\C-f": forward-word'
# ctrl+bで前の単語に移動
bind '"\C-b": backward-word'
これでsource ~/.bashrcをすればctrl + bでの単語間移動が可能になります。
以下はctrl + bでmoge手前まで移動しctrl + wでmogeを消す様子

弊害として元々のctrl + bの「1つ左へ移動」という挙動ができなくなりますがそれは左右キーで良いかと思います。
おわりに
別にctrl + bでなければならない理由はないので、そこは自分の打ちやすい(覚えやすい)キーに変えてしまえば良いかと思います。
キーバインドを変えて快適なターミナルライフを!![]()
おまけ
ctrl + kでカーソル位置から行末まで消すことができるのは割と有名だと思ってるんですが、その逆で行頭まで消すのはどうすればいいんだっけとなったので一応ここに記しておきます。
ctrl + uでカーソル位置から行頭までを消せます。
覚えておくと何かと便利そうですね![]()
参考
以前ctrl + wでスラッシュまでを消すようにするという記事も書いているので合わせてどうぞ
Ctrl+wを押した時にスラッシュまでを削除するようにするbash設定