キーバインドは覚えるな!(emacs)
TDDBCでもEmacsユーザがいたので、自分のEmacsに対する考え方を述べる。
キーバインドを覚える?
最近、Emacs始めました!とか言う人が増えて嬉しいのだが、それに伴いこういう発言をする人が増えた。
「キーバインドを覚えよう!」
「チートシートでキーバインドを暗記しています。」
とか言う人がいる。ちゃんとEmacsを使おうと思えば思うほどこういう人がいるのかもしれない。
だが、キーバインドを覚えるのはハッキリ言って無駄だ!
そもそも、キーバインドは自分やりたいように設定するものだ!と僕は言いたい。
Emacsのコマンドを覚えよ!
つまり、Emacsのコマンドを覚えて、好きなようにキーバインドするべきなのだ!
Emacsのコマンドを覚えることが、Emacsの機能を把握することだと僕は思っている。
Emacsの拡張するのも、コマンドを創ることにしかすぎない。そもそも、EmacsのコマンドはEmacs Lispの関数なのだ。
つまりEmacsのコマンドを覚えることは、Emacs Lispの関数を覚えることなのだ。だからEmacsをあなたが使った時点で、Emacs Lispへの入り口が開かれるのだ。
Emacs Lispはそこまで難しくない。だから、Emacsを使う人たちは是非ともEmacs Lispに挑戦してほしい。
Emacsは使いやすくすることが出来る、それはあなた次第だ!
Emacsは使いにくい?いやいや、それはEmacsのせいではない。あなたの責任なのだ。
Meta-fで、forward-wordが押しにくい?押しやすいキーバインドにすればいいじゃないか?
ちなみに僕はMeta-fにイライラしていたことがあった。それをどうやって解決したかを示そう。
forward-wordは1単語カーソル前へ移動をするEmacsコマンドだ。僕は1単語カーソル移動はそれなりに利用するが、MacのJISキーボードのoptionキーはとても押しづらいものであった。
だから、押しやすいキーバインドは何かを考えた。
結論として、\C-w\C-fとなった。なぜなら、1単語(word)を進ませるのだから、\C-wが良いだろうと思ったからだ。
そして、設定ファイルにこう記述した。
(global-set-key "\C-w\C-f" 'forward-word) ;; エラー
だが。エラーが出た。\C-wはkill-regionが先にバインドされていたからだ。とりあえず、思い切ってバインドを外した。
(global-set-key "\C-w" 'nil) (global-set-key "\C-w\C-f" 'forward-word)
バインドを外したら、その機能が使えなくなってしまうと不安になるかもしれない。だが、その心配はない、いざというときは、M-x コマンド名をすればいい。
つまり、キーバインドを外してもEmacsの機能は使えなくなることは無いということだ。
実は、僕はC-wのkill-regionにも不満を抱いていたから、このまま利用している。よく,間違って\C-wを押して、ソース切り取られるのが嫌だったのだ。だから\C-wは無効のままにしておいた。
だが、kill-regionも意外に結構つかうのだ。だから結局こうなった。
(global-set-key "\C-w" 'nil) (global-set-key "\C-w\C-f" 'forward-word) (global-set-key "\C-w\C-k" 'kill-region)
これで、直ぐにkill-regionが使えるようになった。