パラグラフ単位の移動の改善

Vim anti-patterns - Arabesque


を読んでいると、一行一行移動するんじゃなくてパラグラフとか
ページ単位で移動しろとありました。ページ単位は EmacsVim
似たような感じなのですが、パラグラフ単位の移動というのが
Emacsではやっかいです。デフォルトのバインディング
"M-{"と"M-}"。AltとShiftと角括弧の 3つを押さないといけない。
なんで改善しましょう。

smartrep.elを使う。

EmacsWiki: smartrep.el


適当そうなキーを見つけて、Ctrl+1キーとかでできますが、
片手でバンバン移動できるように smartrep.elを使います。

設定(最新の smartrep.elを使ってください)
(defvar my/ctrl-q-map (make-sparse-keymap)
  "My original keymap binded to C-q.")
(define-key global-map (kbd "C-q") 'my/ctrl-q-prefix)

;; C-q prefixは空いているので, '{'じゃなくて '['にして Shiftも節約
(smartrep-define-key
    global-map "C-q" '(("[" . (backward-paragraph))
                       ("]" . (forward-paragraph))))

これで一度 C-qを押したら、後は '[', ']'でparagraph単位の移動が
できます。

おわりに

最近 smartrep.elを使ってこんな設定を追加していますが、
smartrep.elは EmacsVimのノーマルモードをもたらすものなのかな
と思いました。


ガンガン編集するときは、EmacsVimもそんなに変わらないと
思うんだけど、ソースをざっくり見ているとき等の移動が中心に
なる場合の操作性ってだいぶ Vimの方がいいと思います。
Emacsにもその機能はあるけど、キーが割当たってなくて、
割り当てるとしても他を気にして複雑になるとか、そもそも
複雑なキーに割当たっているってことも多いので、Vimユーザほど
その機能を使いこなせていないというのがあると思います。


smartrep.elはそのあたりの差を縮めてくれるものなんじゃないかなと
思います。さまざまな改善に利用できる可能性が大いにあるのでは
ないでしょうか。