最終更新: 2020-04-27
意外と知られていない様なのですが、Linux 等の bash のキーバインドは、デフォルトで emacs モードになっています。カーソル移動や簡単なエディットは、Ctrl キーを使って emacs と同様に行えます。メリットは、指をキーボードの「ホームポジション」から離さずに済むので、文字入力の時間を短縮出来るという事です。
因みに、bash には vi モードというのも有り、こちらは vim と同じキーバインドなのですが、vim 使いの私も emacs モードで使っています。
vi モードには set -o vi
コマンドで入れます。
emacs モードに戻るには set -o emacs
です。
【広告】
キーバインド:
頻繁に使うであろうキーバインドを紹介すると、次の通りです。
キーバインド | 機能 |
---|---|
Ctrl-b | 1文字戻る (← と同等) |
Ctrl-f | 1文字進む (→ と同等) |
Ctrl-p | 1つ前のコマンド履歴を表示する (↑ と同等) |
Crtl-n | 1つ後のコマンド履歴を表示する (↓ と同等) |
Ctrl-a | 行頭へ移動する (HOME |◀ と同等) |
Ctrl-e | 行末へ移動する (END ▶| と同等) |
Ctrl-h | 直前の文字を消す (BS と同等) |
Crtl-d | カーソル位置で1文字消去する (DEL と同等) 削除すべき文字が無い場合は EOF の意味となります。 .bashrc に set -o ignoreeof を設定しておかないとログアウトします。 |
Ctrl-k | 現在のカーソル位置から行末までを消去 |
Ctrl-u | 行頭から現在のカーソル位置の直前までを消去 |
Ctrl-w | ワードの先頭から現在のカーソル位置の直前までを消去 本来の emacs ではマークからカーソル位置の直前までを消去 |
Ctrl-y | 消去した文字列を挿入 |
Ctrl-/ Crtl-xCtrl-u |
undo 本来の emacs では、Ctrl-_ と Ctrl-x u |
Ctrl-g | 入力済のキーシーケンスの中断 |
Ctrl-t | 現在のカーソル位置と直前の文字を入れ替え |
Ctrl-m | 復帰 (ENTER と同等、実は CR か) |
Ctrl-j | 改行 (ENTER と同等、実は LF か) |
Ctrl-o | 復帰 (ENTER) だが、実行後に1つ後の履歴を表示 |
Ctrl-i | コマンドのコンプリーション (TABと同等) |
Ctrlーv | バッファの挿入 (マウスの右クリックと同等) 本来の emacs では1ページ先に進む |
Ctrl-l | クリア スクリーン (clear コマンドと同等) |
Ctrl-r | 履歴のインクリメンタル「逆」サーチ |
Ctrl-SPACE Ctrl-@ |
使用不可??? 本来の emacs では現在のカーソル位置をマーク |
全てのキーバインドを見たい場合には、bind -p | less
コマンドを実行します。
bind -p | grep '"\\C-.\":'
コマンドを実行すると、Ctrl キーと1文字の組み合わせだけをリストアップ可能です。
尚、バインドされていない次のキーは、シェルによらず OS のカーネルにシグナルを送る為に使用されています。
キー定義 | 機能 |
---|---|
Ctrl-c | SIGINT: プロセスの終了 |
Ctrl-z | SIGTSTP: プロセスのサスペンドfg [%n] コマンドで再開、bg [%n] コマンドでバックグラウンド処理jobs コマンドでサスペンド中のジョブ一覧取得 |
また、次のキーは、シェルによらずターミナルの文字送受信のソフトウェアフロー制御に使用されています。
キー定義 | 機能 |
---|---|
Ctrl-s | 送受信の一時停止 (XOFF) |
Ctrl-q | 送受信の再開 (XON) |