http://rubikitch.com/に移転しました このページをアンテナに追加 RSSフィード

2013-02-02

[]all-ext.el:対象行を絞り込んでからまとめて編集するM-x allを超強化!occurと融合&anything・helmと連携

お久しぶりです。

みなさん、M-x allって知ってますか?

M-x package-install all

インストールできるのですが、これはM-x occurのように正規表現にマッチする行を表示します。

occurとの違いは表示結果を書き換えれば、該当部分が自動的に書き変わることです。

ユースケースとしては、編集対象行を絞り込んでから、置換やrectangle系コマンドで一気に編集するって感じです。

便利なので以前から重宝しています。

ただ、occurより劣る点としては、対象行の行番号が出ていない点と、M-g M-n (next-error)とM-g M-p (previous-error)で移動できない点です。

(union all occur)

occurで絞り込んだはいいけれど、その結果をやっぱり編集したいという場合に改めてM-x allを実行するのは面倒ですね。

そこで、拙作all-ext.elの出番です。

MELPAに登録してあるので

M-x package-refresh-contents
M-x package-install all-ext

インストールしてください。

packageについては以下の設定が必要です。

(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t)

all.elインストールされていないならば同時にインストールされます。

(require 'all-ext)

のみで使えます。


ついでにauto-install.elなどもMELPA経由でインストールできるようにしました。


all-ext.elインストール後、いつも通りM-x allを実行してください。

M-x occur同様行番号がついていることがわかります。

そしてM-g M-nやM-g M-pを実行してください。

該当行にジャンプできるようになっています。

 *All*バッファからもC-c C-cで該当行にジャンプできます。

これでだいたいM-x occurの置き換えはできたことでしょう。

この時点で書き換え可能なoccurとなりました。

anythingやhelmから使う

今のemacsで検索といえば、anythingやその後継となるhelmを使ってる人も多いでしょう。

M-x anything-occur、M-x anything-c-moccur-occur-by-moccur、M-x helm-occurでMigemoつきでガンガン絞り込めるのは爽快としか言いようがありません。

これらで特定の行を絞り込んだら、その結果を編集したいときもあります。

そのとき、anything-resumeなどで次々と見ていくのは面倒で非効率的です。

ならばいっそのことanythingやhelmで表示されている内容を*All*に放り込めないかと思いました。

M-x anything-occurやM-x helm-occurで絞り込んだ後にC-c C-aを押すと、表示内容による*All*バッファが作成されます。

あとは*All*バッファ編集して元のバッファに反映させてください。

occurだけでなく、行番号とその行の内容を表示しているanything・helmコマンドならばなんでも使えます。

http://www.rubyist.net/~rubikitch/archive/all-ext-1.png

http://www.rubyist.net/~rubikitch/archive/all-ext-2.png

funfun 2013/03/09 16:49 anything-c-shell-history.el が最新で動かないですね。11578行目の
anything-compile-source--type が怪しい。

rubikitchrubikitch 2013/03/14 12:06 anything-config.elを修正しました。どうでしょうか?

funfun 2013/03/14 20:32 ごめんなさい。勘違いしていました。
anything-complete-shell-history で履歴が表示されないでした。
最新でも動作しませんね。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/rubikitch/20130202/all