キーボードマクロとキーバインドで生産性を向上する

「カーソルから行末までを2行下の行頭に追加」がしたい。

aaaaaaaa
bbb*bbbbb
ccccccc
ddddddd

これの星印のところでなんかキーを押したら1発で

aaaaaaaa
bbb
ccccccc
*bbbbbddddddd

に変わってほしい。エディタはEmacs

まず「Ctrl-x (」を押してキーボードマクロの記録を開始し、やりたい作業をしてから「Ctrl-x )」で記録を終了する。次に「Meta-x name-last-kbd-macro」でその操作に名前をつける。send-nextって名前にした。次に「Meta-x insert-kbd-macro」で現在のバッファにそのマクロを挿入してみる。

(fset 'send-next
   [?\C-k right down ?\C-y up up ?\C-e])

これが先程僕がやった作業らしい。これをShift-Returnを押したときに発動させることにする。local-set-keyでローカルなキーバインドを設定する(これはメジャーモード単位のスコープらしいんで普段使うキーを上書きとかすると困るかも)

(local-set-key [S-return] 'send-next)

コード末尾でCtrl-x Ctrl-eとか押してLispコードの実行を行う。

試してみる。うんShift-Returnで「カーソルから行末までを2行下の行頭に追加」ができた。めでたしめでたし。

ところでこの操作をアンドゥすると、1回目で貼付けがアンドゥされて、2回目で切り取りがアンドゥされる。まとめて1回でアンドゥするようにできるといいなぁ。まあすごく必要というわけではないが。