EmacsのキーボードマクロでC-e C-jをM-jに割り当てる

プログラミングをしていると

  • 行の途中で次行をinsertして、かつその行に移動したい

ということが良くありました。


いままではその際にC-eで行末まで移動してC-jで次行をinsertして移動ということをやっていたんですが、
あまりに良く行うのでM-jにまとめました。


その際にキーボードマクロを使ったのでその方法をメモ

マクロを作成

以下のコマンドを発行してキーボードマクロの記録を開始します。

C-x (

次にマクロにするコマンドを発行します。
今回の場合は以下の用にコマンドしました。

C-e
C-j

マクロの記録を終了します。

C-x )

マクロが正しく動くかテストします。

C-x e
もしくは
F4キー

マクロの保存

以下のコマンドを発行してマクロに名前をつけます。

C-x C-k n でEnterキー

名前を聞かれたら今回入力する。
今回の場合は

goto-end-and-return

にしました。


これでM-x goto-end-and-returnを押したらマクロが動きます。

あと、次回からEmacs立ち上げ後も使うので.emacsにこのマクロを記述します。
.emacsを開いて以下のコマンドを発行します。

M-x insert-kbd-macro でEnterキー

マクロ名を聞かれるので上記で設定したマクロ名を入力します。

goto-end-and-return

すると.emacsのカーソル位置に以下のような感じの記述が追記されます。

(fset 'go-to-end-and-return
   (lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ("^E
" 0 "%d")) arg)))

これで次回以降もM-x goto-end-and-returnとコマンドを打つとマクロが実行されるようになります。


あとはM-jに上記のマクロを割り当てます。

(global-set-key "\M-j" 'go-to-end-and-return)

これで今までC-e C-jと打っていたコマンドがM-jで動くようになりました。
めでたしめでたし。