Emacs のファイル差分表示(ediff, diff)機能の使い方
今回は Emacs でファイルの差分を表示する機能の紹介です。
Emacs で差分が表示できればそのまま編集することができますし、
表示も差分ビューワー並みにわかりやすく表示できます。
Unix 系ではデフォルトで入っていると思いますが、 Windows ではインストールする必要があります。インストール方法については以前の記事をご覧ください。
ediff (Emacs Diff)
ediff の機能によって差分ビューワーのように差分を表示することができます。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 のカスタマイズ機能を使います。
- M-x customize-group のあとに ediff-window
- [Ediff Window Setup Function] で [Single Frame] を選択
- 設定、保存
eshell 上での diff
Emacs でのコンソールである eshell から diff 機能を使用する方法についても紹介します。diff コマンドの実行
eshell 上で diff を実行すると、結果を別 Window に表示します。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 のカスタマイズ記事をご覧ください。
- 関連記事
-
- Emacs の検索、置換における大文字小文字の区別の切り替え
- Emacs の tags 機能の使い方
- Emacs のファイル差分表示(ediff, diff)機能の使い方
- 本当にプログラミングに使えるフリーのテキストエディター 1 選
- Emacs のパッケージ管理機能の使い方
Facebook コメント
コメント