コマンド M-x diff
は、ミニバッファを使用して2つのファイル名の入力を求め、2つのファイル間の差分を *diff*
という名前のバッファに表示します。これは、変数 diff-switches
から取得したオプションを用いてプログラム diff を実行することで動作します。diff-switches の値は文字列である必要があり、デフォルトでは統一コンテキスト差分を指定する
"-u" が設定されています。diff プログラムの詳細については、Comparing and
Merging Files の Diff
を参照してください。
diffコマンドの出力は、Diffモードと呼ばれるメジャーモードで表示されます。Diffモードを参照してください。
(はるかに洗練された)代替案としては M-x ediff があります(The Ediff Manual の Ediff を参照してください)。
コマンド M-x diff-backup
は、指定したファイルとその最新のバックアップを比較します。バックアップファイルの名前を指定した場合、diff-backup
はそのファイルを、バックアップ元となったソースファイルと比較します。それ以外の点では、M-x diff
と同様に動作します。
コマンド M-x diff-buffer-with-file は、指定したバッファと対応するファイルを比較します。これにより、バッファを保存した場合にファイルにどのような変更が加わるかを確認できます。
コマンド M-x diff-buffers は、指定された2つのバッファの内容を比較します。
コマンド M-x compare-windows は、現在のウィンドウのテキストと、現在のウィンドウを選択する前に選択されていたウィンドウのテキストを比較します。(Emacs のウィンドウに関する詳細については、複数のウィンドウを参照してください。)比較は、各バッファのマークリング(マークリングを参照)にそれぞれの初期ポイント値をプッシュした後、各ウィンドウのポイントから開始されます。その後、一致しない文字に到達するまで、各ウィンドウでポイントを1文字ずつ前方に移動させます。その後、コマンドは終了します。
コマンド起動時に、2つのウィンドウ内の特定の位置の後に一致しないテキストが続いている場合、M-x compare-windows はヒューリスティックに2つのウィンドウ内で一致するテキストまで前進しようと試み、その後終了します。したがって、M-x compare-windows を繰り返し使用する場合(コマンドの繰り返しを参照)、その都度、一致する範囲を1つスキップするか、あるいは別の範囲の開始位置を検出します。
数値引数を指定すると、compare-windows は空白文字の変化を無視します。変数 compare-ignore-case が nil
以外の場合、比較では大文字・小文字の区別も無視されます。変数 compare-ignore-whitespace が nil 以外の場合、compare-windows
はデフォルトで空白文字の変化を無視しますが、接頭辞引数を指定すると、そのコマンドの実行1回限りこの動作が無効になります。
M-x smerge-mode を使用すると、diff3 プログラムの出力を編集するためのマイナーモードである Smerge
モードを有効にできます。これは通常、VC
以外のバージョン管理システムのアップデートにおいて、ファイルへの変更が競合し、マージに失敗した結果発生します。Smerge
モードでは、特定の変更を選択することで競合を解消するためのコマンドが提供されます。
ファイルのマージを行う強力なインターフェースを提供するEmerge機能については、Emergeによるファイルのマージを参照してください。