不良emacsユーザが改めてメタキーを使うキーバインディングを確認した
はじめに
不良といっても、タバコふかしてパラリラパラリラではない。emacsを使うようになってから10年近く立つのに、最近M-sの使い方を知った。これまでメタキーを使う機会といえばM-x、M-%、M-<、M->のみ。あまりにも情けない。これを不良と言わずなんと言おうか(不可とは言わないのが自分への甘えである)。
キーバインドの表示
現在のモードでのキーバインディングを表示するには、describe-bindingsが使える。キーバインドは<f1> bもしくはC-h bだ。helmを導入しているのであればhelm-descbindsを使った方が便利だろう。
キーバインドの調査
今回は、M-○とメタキー+何かで使えるものを調べてみた。
なお、scratchバッファで調べた。結構メジャーモードで違う気がするので、本当はよく使うモード(僕の場合はorg-mode)で調べた方が良いかも。そもそもこういうのは既に他の人もまとめてると思うけど、自分でわからないところを確認しながらの方が覚えられるので。
キーバインド | 関数 | 説明 |
---|---|---|
M-1 .. M-9 | digit-argument | C-u Nの代わり |
M-SPC | just-one-space | カーソルの位置に複数のスペースがある場合に、全部消して一つのスペースに変えてくれるらしい。半角スペースおよびタブ文字(C-q C-i)が反応すること。全角スペースは反応しないことは確認できた |
M-! | shell-command | シェルのコマンドを実行 |
M-$ | ispell-word | ispellでスペルチェックができるようだ(未確認) |
M-% | query-replace | 置換 |
M-& | async-shell-command | シェルのコマンド実行を非同期で |
M-' | abbrev-prefix-mark | 動的展開用のコマンドっぽい |
M-( | insert-parentheses | リージョンを()でかこむ |
M-) | move-past-close-and-reindent | 次の ) に移動し、その後ろで改行+インデント |
M-* | pop-tag-mark | etags系のコマンドっぽい。詳細不明 |
M-, | tags-loop-continue | etags系のコマンドっぽい。詳細不明 |
M-- | negative-argument | C-u - Nの代わり |
M-. | find-tag | etags系のコマンドっぽい。詳細不明 |
M-/ | dabbrev-expand | 動的展開の実行 |
M-: | eval-expression | ミニバッファにLisp式を求め、それを実行する。C-x C-eのミニバッファ版 |
M-; | comment-dwim | 賢いコメント化するやつ |
M-< | beginning-of-buffer | バッファの先頭へ |
M-= | count-words-region | ワードカウント |
M-> | end-of-buffer | バッファの末尾へ |
M-@ | mark-word | カーソル直後の単語をリージョン選択するらしい。実行してみたけどうまく動かなかった |
M-\ | delete-horizontal-space | 連続するスペースを全削除。M-SPCのスペース残さない版かな |
M-^ | delete-indentation | その行のインデント化を削除して、前の行と結合 |
M-` | tmm-menubar | ミニバッファでメニューバーを操作できる |
M-a | backward-sentence | 文の先頭へ |
M-b | backward-word | 前の単語へ |
M-c | seq-capitalize-backward-word | 単語の先頭を大文字に |
M-d | kill-word | 単語の終わりまで削除 |
M-e | forward-sentence | 文の末尾へ |
M-f | forward-word | 次の単語へ |
M-g | Prefix Command | 行移動関係のプリフィックス |
M-h | mark-paragraph | パラグラフをリージョン選択 |
M-i | tab-to-tab-stop | タブを入れる |
M-j | indent-new-comment-line | コメント中で実行すると、改行してコメント化してくれる。(C-jだとただの改行) |
M-k | kill-sentence | 文末まで削除 |
M-l | seq-downcase-backward-word | 単語の先頭を小文字に |
M-m | back-to-indentation | インデント以外の行の先頭に移動 |
M-o | facemenu-keymap | face系のプリフィックス、行の整形もあるのかな |
M-q | fill-paragraph | 段落を整形してくれる |
M-r | move-to-window-line-top-bottom | 今表示されているウィンドウの行頭・中間・末尾に順番に移動する(バッファではない) |
M-s | Prefix Command | 検索系のプリフィックス |
M-t | transpose-words | 単語を入れ替える(C-tの単語版) |
M-u | seq-upcase-backward-word | 単語を大文字化する(M-cが1文字目だけ大文字かするのに対し、M-uはすべて変える |
M-v | scroll-down-command | 上にスクロール(C-vの反対) |
M-w | kill-ring-save | リージョンのコピー |
M-x | helm-M-x | emacsのコマンド実行(helm入れているので、helm-M-xになってるけど) |
M-y | yank-pop | 履歴をたどってyankするものを選択できる |
M-z | zap-to-char | 指定した文字まで削除する |
M-{ | backward-paragraph | パラグラフの先頭まで移動 |
M-| | shell-command-on-region | コマンド実行時にリージョンを標準入力として渡せる |
M-} | forward-paragraph | 次のパラグラフまで移動 |
M-~ | not-modified | バッファを修正していないと設定できる。何の役に立つのかよくわからない |
M-DEL | backward-kill-word | 単語の先頭まで削除 |
まとめ
一通り調べると、メタキーを使うコマンドにもいろいろと便利なものが設定されていることがわかった。ただ、日本語だと、単語系や文、パラグラフがうまく解析できるのかよくわからないから、使いどころが難しいんじゃないかと思う。今回調べた中だと、M-yは使いこなすと便利だと思った。マウスでドラッグするだけで、コピーする設定にしているのだけれど、うっかりコピー先をクリックしたときもドラッグしてしまい、コピーしたものをヤンクできない事故が多発しているけど、M-yを使えば、履歴をたどってもともとコピーしたかったものをヤンクできるので。
不良emacsユーザ脱却のため、ほかのコマンドについても調べていこう。
追記(2016-02-10)
M-yはヤンクした履歴をたどれるだけだったから、ヤンクする前に上書きしてしまうと使えなかった。残念