multifiles 20130615.1433(in MELPA)
View and edit parts of multiple files in one buffer

概要

今度は linked-buffer.el とは逆に、
複数のバッファを1つのバッファにまとめて編集する方法です。

複数のファイルを同時に編集・参照する必要がある場合には、
1つのバッファで統合した方がよいこともあります。

統合することで単一バッファが対象のコマンドを使って
複数のファイルを編集できるからです。

  • isearch
  • M-x occur
  • M-x helm-occur
  • M-% (query-replace)

特に多数の小さいファイルを編集するときに有効です。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてmultifilesを使う方は
以下のコマンドを実行します。

M-x package-install multifiles

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name multifiles

設定 140906052848.multifiles.1.el(以下のコードと同一)

(require 'multifiles)
(global-set-key (kbd "C-!") 'mf/mirror-region-in-multifile)
(defadvice mf/mirror-region-in-multifile (before no-region (s e &optional buf) activate)
  "regionを指定していない場合はバッファ全体を対象にする"
  (unless (region-active-p)
    (setq s (point-min) e (point-max))))

実行方法

$ wget http://rubikitch.com/f/140906052848.multifiles.1.el
$ emacs -Q -f package-initialize -l 140906052848.multifiles.1.el

regionを指定して M-x mf/mirror-region-in-multifile を実行すれば、
その部分が*multifile*バッファにコピーされます。

それを必要な分だけ繰り返してください。

編集が終わったら、*multifile*バッファでC-x C-sすれば
全ファイルに編集結果が反映されます。

なお、そのままだと使いづらいので、regionを指定しない場合は
バッファ全体を対象にするようアドバイスを加えました。

20140906053136.png
Fig1: 左:元のファイル 右:まとめたバッファ

20140906053156.png
Fig2: まとめたバッファを編集するとオリジナルに反映される!C-x C-sで保存!!

本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。