在 Linux 控制台中有任何视觉差异吗?

许多年前,我使用 D32,它可用于 DOS和 Linux。

非 GUI 可视化差异是否适用于像这样的 Linux?

除了 维姆和 Emacs 之外的任何其他版本(Vim 和 Emacs 太强大了: ——)

56681 次浏览

vimdiff will do what you want. Vim is installed by default on most linux distros, so you probably do not even need to install anything.

I'm using vimdiff. Or there is also sdiff.

Personally I like to use vimdiff. But if you don't know vim that won't be that helpful to you.

Vim comes with vimdiff which works pretty well...

Emacs has a built-in visual diff tool: M-x ediff.

Your title mentions "Linux console" but your question mentions meld, which is a GUI application. It might help answerers if you could clarify this.

In GUI apps, meld is still pretty much the standard. It works well, it's reasonably pretty and intuitive.

If you're really limited to using the console (i.e. text-only) then apart from the diff utilities built into editors like vim and emacs you could also try the original command line utility diff. I find it very useful to use the -y option to display files side-by-side, and there are other options I've used to display "unified" diffs and to precisely set the amount of context around matched differences. If you pipe diff's output into less you can browse with fair convenience.

You can try ColorDiff.

If you're comfortable with git, you can also use git diff to generate a patch for you. It'll usually give you nice colors, page to less, and output the unified diff format by default. It'll work regardless of whether the files are part of a git repository.

git diff -- file.a file.b

If file.a and file.b reside in a git repo and are untracked, you'll need to supply --no-index:

git diff --no-index -- file.a file.b

because git will diff against the index by default.

None of the existing answers here quite fit my use case, but I found cdiff, which is a lovely little piece of software that does exactly what I need:

Term based tool to view colored, incremental diff in a Git/Mercurial/Svn workspace or from stdin, with side by side and auto pager support.

Here's what the side by side mode looks like:

side by side diff output

I started to rebuild xxdiff in the console (since I've entirely switched to tmux console development) into a new Python-based single-file tool I call "termdiff". I ran into curses compatibility problems so I put this on the ice for now, I just need some time to fix minor issues with filling empty space, but it currently spits out output that looks just like xxdiff and you can pipe that into less.

http://furius.ca/xxdiff/bin/termdiff

Try termdiff --cat or termdiff --less, it works.

In the meantime I'm using a customized Emacs config and ediff, but it's a little sluggish to start, I'd still like a fast-startup dedicated diff program in the console.

Midnight Commander (mc) has built-in diff and a lot more useful functions. Try:

sudo apt install mc

VS Code has beautiful diffing:

code --diff file1.ext file2.ext

(Though it is a GUI.)

Try meld. It's very light and intuitive.