Emacs正規表現から解放されました。foreign-regexp

perl regular expression

perlの正規表現でemacsのisearch(インクリメンタルサーチ)やquery-replaceを使いたい...

Emacsの正規表現はバックスラッシュが多すぎてひどいです。elispを書くには必要ですが、通常の作業でこれを使うのを強いられると面倒ですね。

以前からperl正規表現でどうにかならないかなーと考えていましたが、そんな願いが叶いました。

githubに置いてありましたよ!

k-talo/foreign-regexp.el

..ということで導入までメモ

elispのパスまで移動して、作者に感謝しつつgit cloneで引っ張ってきます。


cd .emacs.d/elisp
git clone https://github.com/k-talo/foreign-regexp.el.git

設定ファイルに記述。パスをload-pathに追加して読み込みます。


(add-to-list 'load-path
             (expand-file-name "~/.emacs.d/elisp/foreign-regexp.el"))

(require 'foreign-regexp)

(custom-set-variables
 ;; 正規表現、perlかrubyを選択
 '(foreign-regexp/regexp-type 'perl) ;; Choose by your preference.
 '(reb-re-syntax 'foreign-regexp)) ;; Tell re-builder to use foreign regexp.

foreign-regexp使い方抜粋


M-s M-% : Query Replace 置換(問い合わせあり)
M-s M-s : iSearch インクリメンタルサーチ
M-s M-r : iSearch backward 逆方向へインクリメンタルサーチ
M-s M-o : Occur バッファ内でマッチする位置の行を別バッファで確認
M-s M-l : re-builder そのバッファ内で正規表現をテストできる
M-s M-\ : 選択範囲のメタ文字(!*{}[]@など)にバックスラッシュを一括でつける

補足

インクリメンタルサーチはMigemoに対応していないので使い分けたほうがいいですね。

これ以外にもまだ機能があるので、詳細は作成者のgithubへ

https://github.com/k-talo/foreign-regexp.el

ちなみにEmacsの正規表現はこちら。リテラルのままでもバックスラッシュ多いのに、文字列として使うと大変なことになります。

RegularExpression - EmacsWiki