Windowsシステムでの2つのテキストファイルの比較


11

以来ediff-files、Windowsマシンediff-buffersapply: Searching for program: no such file or directory, diffエラーが発生します。

WindowsシステムでEmacsを使用して2つのファイルを比較する方法は?


1
GetGnuWin32をインストールすることで、多くのgnuソフトウェアにアクセスできます(diffがalos wget、sedなど)。差分のみを気にする場合は、gnu.org
software /

エラーメッセージは、何が問題かを示していますdiff。インストールされていません。Cygwinを入手して、再試行してください。
itsjeyd

@itsjeyd Cygwinはすでにシステムにインストールされています
Empty_Mind

@fredtantini GetGnuWin32をインストールした後、同じエラーが発生します
Empty_Mind

2
それはあなたの道にありますか?ディレクトリは少なくともexec-path変数上にあるべきだと思います。
fredtantini、2015年

回答:


8

@nannyがコメントで言ったように、解決策はdiffutilsでCygwinをインストールしたことです。これを行う方法は次のとおりです。

  1. Cygwin をホームページからダウンロードしてください。
  2. diffutils: A GNU collection of diff utilitiesパッケージとともにCygwinをインストールします。このパッケージはUtils、Cygwinインストールのいくつかのステップの1つにあるセクションにあります。 diffutilsを使用したCygwinのインストール
  3. CygwinディレクトリをPATH Windowsシステム変数に追加します。これは次の方法で実行でき
    ます。a)順序を維持するために独自のCYGWIN変数を追加します。CYGWINシステム変数の作成;
    b)作成した変数をシステムのPATH変数に追加します。CYGWIN変数をPATHシステム変数に追加する

この後には、呼び出すことができますediff-buffersediff-filesそして成功した他の人。これは次のようになります。実行中の差分

楽しい!


3

git for windowsがインストールされている場合は、追加するだけで十分です

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

PATHに追加します。これは、diff実行可能ファイルがすでに同梱されており、そのフォルダーにインストールされているためです。


2

これにより時間を節約できる可能性があるため、ここで回答します。cygwin binディレクトリをパス(または他の回答で提案されている他のディレクトリ)に追加したくない場合は、変数を設定して、ediffが使用するプログラムのパスを設定できますediff-diff-program。たとえば、C:\cygwin\bincygwinを使用している場合は、(または実際のパスが何であれ)に設定できます。設定する変数を見つけるのに少し時間がかかりました。仕事をしなかったことをいくつかは以下の通りであった。ediff-custom-diff-programdiff-command

例えば:

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

それを行います。


IIRC、一部のライブラリのロードに失敗するため、シェルの外でcygwinバイナリを呼び出すことはできません。これは、PATH変数が正しく設定されているはずのCygwinからEmacsを実行した場合にのみ機能すると思います。私が間違っていたら訂正してください。
DoMiNeLa10

1
@ DoMiNeLa10 Windows 10マシンでEmacs 26.1を使用して、Cygwinを知らなくてもタスクバーからemacsを起動してテストしました...正常に動作します。さらに、それをパスに追加するソリューションには、それが本当に問題である場合、あなたが説明するのと同じ問題があります。
sturgman

1
申し訳ありませんが、私のコメントの最後の部分は正しくありません。これをパスに追加しても、ライブラリを見つけることができるため、提案されているのと同じ問題は発生しません。そうは言っても、私は答えでアプローチをテストしました、そしてそれはうまくいきます。
sturgman

0

差分を生成する必要はないが、ファイル間の違いを見つけたいだけの場合は、M-x compare-windows代わりに使用する方法があります。

2つのファイルが同時に表示されるように2つのファイルを開き、両方のバッファーでポイントを先頭に移動して、を実行しM-x compare-windowsます。ファイルが異なる最初の場所にポイントを移動します。これは、外部の実行可能ファイルなしで動作するはずです。


1
これは、両方のファイルで最初に異なる文字の前のポイントを停止します。
Empty_Mind

0

コマンドラインインストーラーhttps://scoop.sh/を使用する場合は、プロンプトをdiff入力scoop install diffutilsして取得できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.