web-dev-qa-db-ja.com

コマンドライン差分ツール

したがって、デフォルトでdiffコマンドがインストールされています。私は確かにそれを使用する方法を知らないwell。しかし、私はいくつかの合理的なデフォルトの使用を期待します。しかし、diff file1 file2取得します...テキスト...頭の中で解析する必要があります...これは、2つのテキストの奇妙な組み合わせであり、それ自体が非常に複雑であるという事実に助けられていません。

そこで、私はグラフィカルなソリューションを探しました。 meld。これは、箱から出してみるとずっとうまくいきます。

しかし、私は常にコマンドラインに留まるという贅沢を望んでいます。次のようなかなり標準的なコマンドはありますか?

  • デフォルトで色を使用し、構文の強調表示を採用できます
  • サイドバイサイドの差分を表示し、デフォルトで3者間マージを行う
  • コマンドラインで機能します。 libncurses経由
  • vimemacs、IDEのいずれにも依存しない
  • 編集されたファイルをその場で変更できますか?

そうでない場合、なぜそうではないのですか?私はcolordiffを調べましたが、完全にはうまくいきませんでした。

5
Vorac

この答えがあなたを満足させないのではないかと恐れていますが、あなたは相反する制約を課していると思います。

差分について

しかし、最初に古典的なdiffツールを守る必要があります。その主な目的は、アプリケーション上のマシンによって処理されることになっているソフトウェアパッチを生成することです。さらに、これらのパッチはできる限りコンパクトに設計され、理想的にはASCII文字のみを使用するため、電子メール、Usenetなどを介して高速かつ確実に共有できます。

これらのパッチを人間が読み取れる(および一部の人間が理解できる)ことも重要な特性ですが、最優先事項ではありません。

あなたの質問

シンプルで基本的なコマンドラインツールに対するユーザーの要望を完全に理解して共有していますが、並べて表示した差分は、おそらくカラーハイライトで表示されますが、単純ではなく、実際のコマンドラインツールから期待できる範囲に含まれていません。もはやライン指向ではありません。

その隣にあるのは、ViまたはEmacsベースのツールです。これは、人間が受信できる限りシンプルで明確であり、同時に非常に柔軟です。また、強力なマージ機能も提供します。

それらを形成し、vimdiffはすでに言及されました コメント内

Emacsに関しては、ファイル比較は通常エディター内から開始されます。そのために最も一般的に使用されるツールはEdiffで、2つのファイル、ツリーファイル、それらの1つは共通の祖先として扱われるなどのさまざまなニーズに対応する多数のエントリポイントを提供します。可能なマージについても同じです。

珍しいとはいえ、コマンドラインからEdiffにアクセスできるようになりました。Emacsを

emacs FILE1 FILE2 -nw --eval "(apply 'ediff-buffers (last (nreverse (buffer-list)) 2))"

次に、ターミナル内でFILE1FILE2を比較するインタラクティブなEdiffセッションに直接ジャンプします。 -nwオプションを省略した場合(およびすべての要件が満たされている場合)、同じセッションが別のグラフィカルフレームに表示されます。参照 この関連する質問 by ashutosh jain。

さて、ここまではEmacsを簡単なツールとは言いませんでした。しかし、数年間徹底的に研究すれば、あなたはそれを愛するでしょう。 (個人的な意見です。)

だから、残念ながらいいえ:あなたの制約すべてを満たすツールは知りません。

2
Jürgen