はじめに
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設定