expand-region.elの紹介

magnars/expand-region.el · GitHub


expand-region.elの紹介。結構便利と思う人が多いんじゃないかなと
勝手に思っています。


追記
まだ大きく変更されていることがあるものなので、定期的にアップデートした方が
よいと思います。
気になる方は githubでプロジェクトをwatchしておくとよいでしょう。

設定

githubから cloneしてそこに load-pathを設定しておいてください。

;; expand region
(add-to-list 'load-path "~/.emacs.d/expand-region.el")
(require 'expand-region)
(global-set-key (kbd "C-@") 'er/expand-region)
(global-set-key (kbd "C-M-@") 'er/contract-region) ;; リージョンを狭める

;; transient-mark-modeが nilでは動作しませんので注意
(transient-mark-mode t)

概要

er/expand-regionを実行する度にリージョンの範囲が広がっていくという
ものです。EmacsVimに比べて単語単位以上のものを扱うのはとても弱い
です。単語のリージョン選択、引用符で囲まれたものの選択等々。
これらを改善するために @さんのthingoptなんかがあるわけですが、
関数がいっぱいあって、こちらでkeychordを使った設定などが載っていますが、
やっぱりたくさんあって大変です。expand-region.elっていうのは小回りは効かないかも
しれないですが、そのあたりのことを改善するツールです。

実行結果

er/expand-regionを実行する度に以下のように選択範囲が広がります。
(狭めるときは er/contract-regionを実行してください)


初め

1回目(単語)

2回目(シンボル)

3回目(S式の中)

4回目(S式)

5回目(ファイル全体)


コンテキストによって変わることもあります。
バッファごとに広げ方を変更できたりといろいろ拡張も
考えられているようです。

終わりに

検索中の Ctrl-wのような感じで使えるので、
どなたでもわりと簡単に便利に使えるんじゃないかなと思います。