Emacsでキーバインドの割当変更について
Emacsではデフォルトでほとんどのキーにコマンドが割り当てられている。しかし、キーによってはほとんど使わないコマンドが割り当てられていたりする。
キーバインドの割当を変更する上でどのキーにどんなコマンドが割り当てられているかを確認し、そのキーの割当が変更可能かどうかを確認する。
割当変更可能かどうかは、terminal上で起動したEmacsでの場合とする。
X Emacsについては最後に記述。
キーバインド表
割当変更: ○可能△可能だがおすすめしない×不可
キー | コマンド | 説明 | 割当変更 | |
---|---|---|---|---|
C-a | move-beggining-of-line | 行の先頭へ移動 | △ | |
C-b | backward-char | 1文字前に移動 | △ | |
C-c | (prefix-command) | modeによって操作が変わる | △ | |
C-d | delete-char | カーソル位置の文字を消す | △ | |
C-e | move-end-of-line | 行の最後へ移動 | △ | |
C-f | forward-char | 1文字後に移動 | △ | |
C-g | keyboard-quit | 入力のキャンセルなど | △ | |
C-h | delete-backward-char | 1文字前を消す | △ | |
C-i | TAB(タブキー) | インデントなど | × | |
C-j | newline-and-indent | 改行してインデント | ○ | |
C-k | kill-line | 現在の行のカーソル位置より後ろを消す | △ | |
C-l | recenter-top-bottom | カーソル位置が画面の上部、中央、下部くるように移動 | △ | |
C-m | newline(RET,エンターキー) | 改行 | × | |
C-n | next-line | 次の行へ移動 | △ | |
C-o | open-line | カーソル位置に空行を入れる | ○ | |
C-p | previous-line | 前の行へ移動 | △ | |
C-q | quoted-insert | 文字コードで直接入力できる | ○ | |
C-r | isearch-backward | 前検索 | △ | |
C-s | isearch-forward | 後検索 | △ | |
C-t | transpose-chars | 文字を前後入れ替え | ○ | |
C-u | universal-argument | C-u数値commandでcommandを数値回実行 | ○ | |
C-v | scroll-up | 画面を下にスクロール | △ | |
C-w | kill-region | 範囲を消す | △ | |
C-x | (prefix-key) | (大抵)固定の操作 | △ | |
C-y | yank | 貼り付け | △ | |
C-z | suspend-frame | Emacsを一時停止してシェルに戻る | △ | |
C-[ | Esc(エスケープキー) | ESCとして動作 | × | |
C-] | abort-recursive-edit | 再帰編集を抜ける(不明) | ○ | |
C-\ | toggle-input-method | 入力切り替え | △ | |
C-; | (不可) | キーコードがとれないため使えない | × | |
C-' | (不可) | キーコードがとれないため使えない | × | |
C-, | (不可) | キーコードがとれないため使えない | × | |
C-. | (不可) | キーコードがとれないため使えない | × | |
C-/ | undo | 前の変更を取り消す.C-_, C-xuも同様 | ○ | |
C-- | C-_(undo) | C-_として動作 | × | |
C-= | (不可) | キーコードがとれないため使えない | × | |
C-` | (不可) | キーコードがとれないため使えない | × | |
C-@ | set-mark-command | マークセット | ○ | |
C-SPACE | set-mark-command | マークセット | ○ | |
C-1 | (不可) | キーコードがとれないため使えない | × | |
C-2 | C-@ | C-@として動作 | × | |
C-3 | ESC | ESCとして動作 | × | |
C-4 | C-\ | C-\として動作 | × | |
C-5 | C-] | C-]として動作 | × | |
C-6 | C-^(undefined) | C-^として動作 | × | |
C-7 | C-_ | C-_として動作 | × | |
C-8 | DEL(delete-backward-char) | DELとして動作 | × | |
C-9 | (不可) | キーコードがとれないため使えない | × |
割り当てを変えるなら(自分の設定)
C-j => anythingのprefix-key
EnterとTABの操作をあわせただけ、Emacsの設定で改行時の自動インデントもできるし専用キーはもったいない。
C-jは最高の位置にあるキーなので割り当てはよく考えるべき。
自分はanythingのprefixとしてC-jiでimenuとかC-jfでfind-fileとかにしてます。
C-o => completion系
これもC-p C-a RETとかで代用可能。
自分は補完操作を割り当ててます。autocompleteやanythingとか。
C-q
タブがスペースになるときにどうしてもタブを入力したいなど、たまにどうしても必要になります。
ただ、めったにないのでM-x(execute-extended-command)から実行するのもあり。
一回入力したらコピペもできるし、anythingでEmacs Command History使っていれば同じコマンドを連続で使うのも苦じゃないはず。
自分は今のところ変更していない。C-qは結構使いづらいため。
C-t => Undefined(screenのprefix-keyのため)
使う人はよく使うらしい文字入れ替え。大抵消してから打ち直ししてるの で使わない。
自分はC-tのバインドを完全に消してます。screenのprefixをC-tにしてるため誤爆しないように。
C-u
n回連続実行。Vimでは便利だけど、Emacsだと(自分は)あまり使わないかな。M-xから実行で代用可能。複雑なものはキーマクロ使うので。
自分はまだ割当変えていないけど、次何か必要になればこれを変えます。
C-](C-5)
コマンドを使ったことないので変えても平気だろう。ただし位置がかなり遠い。
自分は変更していない。
C-/ C-_
undoは選択肢がいくつかあるのでどれか一つ残せば良いと思う。
いつもC-_(C--)を使っているのでC-/は変えても良いかな。
ただしC-_の場合、X Emacsを使ってるときと操作が変わってしまうので注意(後述)。
自分は変更していない。
C-@ C-SPACE
マークセット系。大抵の人はC-SPACEを使っているはず。C-@は日本語キーボードでも英字キーボードでもそこそこの位置にあるので選択肢としてはあり。
自分は変更していない。