Emacs のファイル差分表示(ediff, diff)機能の使い方

今回は Emacs でファイルの差分を表示する機能の紹介です。
Emacs で差分が表示できればそのまま編集することができますし、 表示も差分ビューワー並みにわかりやすく表示できます。

なお、Emacs で diff の機能を使うためにはコマンドラインの diff プログラムが必要となります。
Unix 系ではデフォルトで入っていると思いますが、 Windows ではインストールする必要があります。インストール方法については以前の記事をご覧ください。

ediff (Emacs Diff)

ediff の機能によって差分ビューワーのように差分を表示することができます。
emacs_diff_ediff.png

ediff の開始

ediff は比較対象を指定して開始します。比較対象にはファイルやバッファーなどを指定可能です。
コマンドはキーに割り当てられていないので、 M-x の後に次表のようなコマンド名を入力します。
コマンド 対象
ediff-files ファイル
ediff-buffers バッファー
メニューからも実行可能です。 これら以外にもいろいろあるので、他ものはそちらで確認して下さい。
 [Tools] -> [Compare (Ediff)] 

表示時の操作

ediff 実行中は操作用バッファー内でキーを入力します。
使用するキーをいくつか紹介します。詳しくはヘルプを見て下さい。
キー 機能
p または [Back space] 前の差分位置に戻る
n または [Space] 次の差分位置に移動
a 現在位置の内容をバッファー A から バッファー B にコピー
b 上記の逆
? ヘルプの表示
q ediff の終了

設定

いつのバージョンからか忘れましたが、 デフォルトでは操作用バッファーが別フレームとして分かれるようになってしまいました。
個人的には、これだとバッファー間の移動が面倒で使いづらいです。 設定で最初のスクリーンショットのように 1 つのフレームにすることができます。

設定には Emacs のカスタマイズ機能を使います。
  1. M-x customize-group のあとに ediff-window
  2. [Ediff Window Setup Function] で [Single Frame] を選択
  3. 設定、保存
emacs_diff_settings.png

eshell 上での diff

Emacs でのコンソールである eshell から diff 機能を使用する方法についても紹介します。

diff コマンドの実行

eshell 上で diff を実行すると、結果を別 Window に表示します。
emacs_diff_eshell.png

1 つずつのファイルの場合は ediff の方が便利ですが、ディレクトリー(フォルダー)ごとの比較といった場合に重宝します。

diff 結果のバッファー(*Diff*)では以下のような操作が可能です。
キー 機能
M-p 前の差分位置に戻る
M-n 次の差分位置に移動
M-P 前のファイルの差分位置に戻る
M-N 次のファイルの差分位置に移動
? ヘルプの表示
他の操作に関してはヘルプを見てください。

また、私が以前作成した emacs-lisp を使うと n, p での移動も可能となります。

eshell から ediff を呼び出す

eshell にコマンドを追加することによって、 eshell 上から ediff-files を呼び出すことができます。
 ~/cs/i18n/WpfI18n/Properties $ ediff Resources.resx Resources.ja-JP.resx
 #<buffer *Ediff Control Panel*>
やり方については、 以前の eshell のカスタマイズ記事をご覧ください。
関連記事
Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
101位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
16位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

12月 | 2025年01月 | 02月
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。