English | 日本語
XeFM には 2 つの差分ビューアーが内蔵されています。2 つのテキストファイルを左右に並べて比較するファイル差分と、2 つのディレクトリツリーを再帰的に比較するディレクトリ差分です。どちらもウィンドウ全体に開き、XeFM を離れずに使えます。
ちょうど 2 つのファイルを選択して、Select → Compare Selected Files…(選択したファイルを比較、diff_files)を選びます。2 つのファイルは同じペインにあっても、左右のペインに 1 つずつあってもかまいません。XeFM は両方のペインから選択項目を集めます。
キーはキーマッププリセットによって異なります。キーマッププリセットを参照してください。
選択に含まれるディレクトリは無視されます。ファイルがちょうど 2 つにならない場合は、XeFM がそう伝えます(Select exactly 2 files to compare)。
どちらかのファイルがバイナリ(画像、実行ファイル、アーカイブなど)の場合、比較するテキストがありません。そのときは差分ビューアーの代わりに、diff_files が 2 つのファイルを 1 バイトずつ比較し、結果をメッセージボックスで伝えます。両方のサイズに続けて、Identical(同一)、Different (sizes differ)(サイズが異なる)、または最初に異なるバイトのオフセットが表示されます。
photo.jpg 2,481,152 bytes
photo2.jpg 2,481,152 bytes
Identical
大きなファイルや、リモートサーバー上やアーカイブ内のファイルは、キャンセルできる進捗ダイアログを表示しながら比較します。
左右それぞれが独自のシンタックスハイライトを保ち(Pygments がインストールされている場合)、各行には元の行番号が付きます。変更箇所は色の帯で示され、帯の色はアクティブなテーマに合わせて変わります(ダークテーマでは暗めの帯、ライトテーマではパステル調の帯)。
| キー | 動作 |
|---|---|
↑ ↓ |
1 行スクロール |
PgUp / PgDn |
1 ページスクロール |
Home / End |
先頭/末尾へ移動 |
← → |
横スクロール |
n / N |
次/前の変更ブロックへ移動 |
isearch |
インクリメンタルサーチ。その後 ↑ / ↓ で一致箇所を移動 |
| 中央の境界をドラッグ | 2 つのペインの仕切りを移動 |
F1 |
キーのヘルプ |
Esc または quit |
ビューアーを閉じる |
isearch と quit はファイル一覧と同じキーで、そのキーはキーマッププリセットによって異なります。ここにあるほかのキーは、どのプリセットでも同じです。
フッターには総行数、変更数、キーのヒントが表示されます。タブはテキストビューアーと同じく 8 桁ごとのタブ位置に展開されます。
Select → Compare Directories…(ディレクトリを比較、diff_directories)を使うと、左ペインの現在のディレクトリと右ペインの現在のディレクトリを再帰的に比較します。ファイルを選択する必要はありません。それぞれのペインで目的のディレクトリに移動して、実行するだけです。
バックアップと実際に使っているディレクトリとの比較、2 つのツリーが同期しているかの確認、アップデートや移行の後に何が変わったかの確認に便利です。
大きなツリーでも操作が重くならないよう、ビューアーは段階的にスキャンします。
両方のツリーを合わせたものが左右に並べて表示されます。ディレクトリは展開と折りたたみができ、2 つの列の間にある中央の区切り記号が、それぞれのノードの判定結果を示します。
フッターの上の行には、フォーカスのある項目の詳細が表示されます。左右それぞれのサイズと更新日時で、新しいほうの側には newer が付きます。差が 2 秒未満の日時は同じとみなされます(FAT/exFAT は日時を 2 秒単位で記録するため)。これはコピーの競合ダイアログの Overwrite older と同じ規則です。
| キー | 動作 |
|---|---|
↑ ↓ · PgUp/PgDn · Home/End |
カーソルを移動 |
→ / ← |
ディレクトリを展開/折りたたみ |
Enter |
ディレクトリを開く、または内容の異なるファイルでファイルごとの差分を開く(バイナリファイルでは代わりにバイト比較の結果を表示) |
n / N |
次/前の違いへ移動 |
Tab |
アクティブな側を切り替え |
[ / ] |
中央の仕切りを移動(境界のドラッグでも可) |
| クリック/ダブルクリック | 片側にフォーカス · ディレクトリ/ファイル差分を開く |
copy_files |
フォーカスのある項目を反対側にコピー |
move_files |
フォーカスのある項目を反対側に移動 |
delete_files |
フォーカスのある項目を削除(アクティブな側で) |
edit_file |
設定した TEXT_DIFF ツールで両側をマージ |
s |
同期:アクティブな側からのコピーを計画し、もう一度押すと実行 — ディレクトリ同期を参照 |
d |
違いだけを表示するか、すべてを表示するかを切り替え |
r |
再スキャン |
Esc または quit |
ビューアーを閉じる |
アクションの名前を書いた行(copy_files、move_files、delete_files、edit_file、quit)は、ファイル一覧でのそのアクションのキーを使うので、キーはキーマッププリセットによって異なります。キーマッププリセットを参照してください。ほかのキーは、どのプリセットでも同じです。
コピー/移動/削除のキーはメインのファイルマネージャーと同じで、同じファイル操作エンジンを通して実行されるため、2 つのツリーをその場で揃えられます。edit_file は TEXT_DIFF に設定した外部ツールを起動します(たとえばターミナルでは vimdiff、デスクトップアプリでは code --diff)。
difflib.SequenceMatcher による行単位の比較です。edit_file はどのファイルの組み合わせでも TEXT_DIFF ツールを起動するので、バイナリを扱えるツールを明示的に使うこともできます。diff_files と diff_directories のキー、ディレクトリ差分の中のファイル操作キーは、どれも設定の KEY_BINDINGS で割り当て直せます。