みねっちょのマイコン関係ブログ

組込開発系フリーソフトやハードの情報発信ブログ

Linux のコマンドラインのカーソル移動は emacs です

サイト内 Google 検索:


最終更新: 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 の意味となります。
.bashrcset -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)

【Linux 関係の目次へ戻る】