いまさらながらEmacsのデフォルトのキー操作について、日本語キーボードレイアウト上で可視化してみた。
先人の知恵(配置)を考慮しながら、自分好みのキー操作にカスタマイズしていきたい。
fundamental-modeのCtrlキーとの組み合わせ
設定ファイルを使用せず、一番素のメジャーモードであろうfundamental-modeでCtrlキーとの組み合わせでどんなfunctionが呼ばれるか図にしてみる。
ホームポジションから押しやすいキーとしてはC-;、C-,、C-.などが空いている。
それぞれのキーに割り当てられているものを関数名とともにおさらいする。
赤系 カーソル移動(小)
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-f | forward-char | カーソルを右に1つ移動 |
| C-b | backword-char | カーソルを左に1つ移動 |
| C-p | previous-line | カーソルを上に1つ移動 |
| C-n | next-line | カーソルを下に1つ移動 |
青系 カーソル移動(大)
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-a | move-beginning-of-lineforward-char | カーソルを行の先頭に移動 |
| C-e | move-end-of-line | カーソルを行の最後に移動 |
| C-v | scroll-up-command | カーソルを約1画面分下に移動 |
オレンジ系 取り消し)
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-g | keyboard-quit | 途中の操作を取り消す |
| C-/ | undo | 完了した操作の取り消し |
緑系 削除・選択・コピペ
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-d | delete-char | カーソルの位置の文字を1文字消す。 |
| C-SPACE, または C-@ | set-mark-command | カーソルの位置を選択開始位置にセット。 |
| C-k | kill-line | カーソル位置から行末まで削除(カット) |
| C-w | kill-region | 選択範囲を削除(カット) |
| C-y | yank | カットしたものをペースト |
| C-backspace | backward-kill-word | カーソル位置から前の単語を削除(カット) |
紫系 検索
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-s | isearch-forward | 下方向に検索 |
| C-r | isearch-backward | 上方向に検索 |
ピンク系 連続
単体では何も機能せず、入力後のキーで様々な操作ができるようになっている。
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-x | ファイル操作やバッファ操作 | |
| C-c | モードによって様々 | |
| C-h | ヘルプ機能 |
例えばファイルを開くのはC-x C-f、ファイルを保存するのはC-x C-sなど。
黄色系 代替キー
Emacsで割り当てられているわけではなくASCIIコードの都合でTABやRET、ESCとして認識される。
その他のキー
| キー操作 | 関数 | 機能 |
|---|---|---|
| C-¥ または C-\ | toggle-input-method | Emacs内蔵の文字入力切り替え(日本語など) |
| C-l | recenter-top-bottom | カーソルがある位置が真ん中(上部、下部)になるようにスクロール |
| C-q | quoted-insert | 次のキーをそのまま文字として入力する |
| C-t | transpose-chars | カーソルがある文字と、その前の文字を入れ替える |
| C-u | universal-argument | 関数に数字などの引数を与えるために使う |
| C-o | open-line | 改行するがカーソルは動かさない |
| C-j | electric-newline-and-maybe-indent | 改行して必要に応じて自動インデントする |
| C-] | abort-recursive-edit | 再起編集状態から抜ける(通常はC-gで十分) |
| C-z | suspend-frame | 作業中断してOSやシェルに制御を戻す |
| C-1 … 0 | digit-argument | 数字を引数にして関数に与えるときに利用(C-uでも可能) |
| C– | negative-argument | マイナスを引数にして関数に与えるときに利用(C-uでも可能) |
例えば置換コマンド(query-replace)で特定の文字をタブに置換したい場合、置換後の文字列を入力する際にC-q TABを使用する。
また、改行に置換したい場合は置換後の文字列を入力する際にC-q C-jを入力する。
確認環境
Ubuntu 24.04
Emacs 30.2