Membandingkan dua file teks pada sistem Windows

11

Karena ediff-filesdan ediff-buffersmengakibatkan apply: Searching for program: no such file or directory, diffkesalahan pada mesin windows.

Bagaimana cara membandingkan dua file menggunakan Emacs pada sistem windows?

Pikiran kosong
sumber
1
Dengan menginstal GetGnuWin32, Anda memiliki akses ke banyak perangkat lunak gnu (berbeda tetapi juga wget, sed ...). Jika Anda hanya peduli untuk perbedaan, Anda bisa menggunakan gnu.org/software/diffutils
fredtantini
Pesan kesalahan memberitahu Anda apa yang salah: Anda belum diffmenginstal. Dapatkan Cygwin dan coba lagi.
itsjeyd
@itsjeyd Cygwin sudah diinstal pada sistem
Empty_Mind
@ fredtantini Setelah menginstal GetGnuWin32 saya mendapatkan kesalahan yang sama
Empty_Mind
2
Apakah itu di jalanmu? Saya pikir direktori paling tidak harus pada exec-pathvariabel.
fredtantini

Jawaban:

8

Seperti @nanny katakan dalam komentar, solusi telah menginstal Cygwin dengan diffutils. Inilah cara melakukannya:

  1. Unduh Cygwin dari beranda .
  2. Instal Cygwin dengan diffutils: A GNU collection of diff utilitiespaket. Paket ini dapat ditemukan di Utilsbagian dalam salah satu dari beberapa langkah instalasi Cygwin. menginstal Cygwin dengan diffutils
  3. Tambahkan direktori Cygwin ke variabel sistem PATH windows. Ini dapat dilakukan dengan:
    a) menambahkan variabel CYGWIN Anda sendiri, untuk menjaga pesanan. membuat variabel sistem CYGWIN;
    b) dan menambahkan variabel yang baru saja Anda buat ke variabel sistem PATH.menambahkan variabel CYGWIN ke variabel sistem PATH

Setelah ini, Anda dapat menelepon ediff-buffers, ediff-filesdan yang lainnya berhasil. Yang terlihat seperti ini:menjalankan ediff

Nikmati!

Pikiran kosong
sumber
3

Jika Anda memiliki git untuk windows yang diinstal, maka itu sudah cukup untuk ditambahkan

C:\Program Files\Git\usr\bin\

ke PATH Anda, karena sudah dikirimkan dengan diff yang dapat dieksekusi dan memasangnya di folder itu.

FlyingFoX
sumber
2

Ini mungkin menghemat waktu orang jadi saya akan jawab di sini. Jika Anda tidak ingin menambahkan bindirektori cygwin ke jalur Anda (atau yang lain yang disarankan dalam jawaban lain), Anda dapat mengatur jalur penggunaan program ediff dengan mengatur variabel ediff-diff-program. Misalnya Anda bisa mengaturnya ke C:\cygwin\bin(atau apa pun jalur sebenarnya dalam kasus Anda) jika menggunakan cygwin. Butuh beberapa waktu untuk mencari tahu variabel mana yang harus ditetapkan. Beberapa yang TIDAK berfungsi adalah: ediff-custom-diff-programdan diff-command.

Sebagai contoh:

(setq ediff-diff-program "c:/CYGWIN64/bin/diff.exe")

melakukannya.

pemburu
sumber
IIRC, Anda tidak dapat memanggil binari cygwin di luar shell, karena mereka gagal memuat beberapa pustaka. Saya pikir ini hanya akan berfungsi ketika Emacs dijalankan dari Cygwin, yang seharusnya memiliki PATHset variabel dengan benar. Koreksi saya jika saya salah.
DoMiNeLa10
1
@ DoMiNeLa10 Saya mengujinya pada mesin Windows 10 dengan Emacs 26.1 dengan memulai emacs dari taskbar tanpa mengetahui tentang Cygwin ... berfungsi dengan baik. Selain itu, solusi menambahkannya ke jalur akan memiliki masalah yang sama seperti yang Anda jelaskan jika itu benar-benar masalah.
Sturgman
1
Maaf, bagian terakhir dari komentar saya salah. Menambahkannya ke path tidak akan memiliki masalah yang sama seperti yang Anda sarankan, karena itu akan dapat menemukan perpustakaan. Yang mengatakan, saya menguji pendekatan dalam jawaban dan itu bekerja dengan baik.
sturgman
0

Jika Anda tidak perlu membuat diff, tetapi hanya ingin menemukan perbedaan antar file, salah satu cara untuk melakukannya adalah dengan menggunakannya M-x compare-windows.

Buka dua file sedemikian rupa sehingga Anda melihat keduanya secara bersamaan, pindahkan titik ke awal di kedua buffer, dan jalankan M-x compare-windows. Ini akan memindahkan titik ke tempat pertama di mana file berbeda. Ini harus berfungsi tanpa eksekusi eksternal.

legoscia
sumber
1
Ini menghentikan titik sebelum karakter berbeda pertama di kedua file.
Empty_Mind
0

Jika Anda menggunakan penginstal baris perintah https://scoop.sh/ Anda bisa mendapatkannya diffdengan mengetikkan scoop install diffutilsprompt Anda.

Cesc
sumber