1

我在我的 OSX 机器上安装了 MacVim,因此默认Vim应用程序(即:/usr/bin/vim)实际上是指向 MacVim 附带的命令行版本的 Vim 的符号链接(即:/Applications/MacVim.app /MacOS/vim),因为它比 OSX10.6 附带的普通 Vim 提供了一些关键优势。

我需要定期准备一组文件之间的差异,并将其导出为彩色的并排查看 HTML 文件。这通常通过以下方式实现:

vim -d file1 file2
(Within Vim): toHTML

这样做的问题是我必须手动检查这两组文件的 HEAD 版本和特定版本,并为每对文件执行此操作。这是非常耗时的。

是否可以将svn diff命令的结果通过管道传输到 Vim,这样我就可以为整个目录(即:PWD)提供一个彩色的并排视图差异,而不仅仅是统一的差异视图?

我发现了几个试图实现这一点的 Vim 脚本和 bash 脚本,但有两个关键问题:

  1. 我希望显式调用vim -ddiff 工具,而不是vimdiff,因为 MacVim 应用程序似乎没有附带vimdiff,所以在启动应用程序时我会使用错误的 Vim 版本

  2. 我希望递归地针对整个目录生成多文件差异,而不是一次只生成一个或两个文件。

如果这不可行,我可能会创建一个或多或少实现此目的的 bash 脚本,但如果有更有效的方法可以做到这一点,我想避免将一个被黑/不可靠的脚本放在一起。

谢谢你。

4

3 回答 3

2

vimdiff只是 的替代名称vim。二进制文件检查它是如何启动的并相应地确定它的行为。gvim(这就是为什么and没有不同的文件的原因vim。)

在我的 Mac OS 和 Linux 机器上,我创建了一个~/bin目录,然后在其中创建了从各种名称到我的 macvim 二进制文件的软链接。我~/bin很早就开始了我的道路。

我不在工作,我可以检查以确保,但我认为您可以更改默认的 SVN 差异以指向vimdiff~/.subversion/config。寻找diff-cmd部分。https://stackoverflow.com/a/9604604/128421也可能会为您提供一些有用的信息。

于 2012-08-31T04:34:00.027 回答
1

你可以试试我的aurum插件,它附带的:AuVimDiff命令也能够通过 vimdiff split 查看多个选项卡中的所有更改:

AuVimDiff full HEAD 300

并获得两个修订之间的差异,而无需手动签出它们:

AuVimDiff file file1 HEAD 300

file file1部分是可选的,如果省略,它将与当前文件打开 diffsplit。所有修订也是可选的,对于 subversion,指定一个修订就是将其与工作目录中的文件进行比较,并且不指定修订就像svn diff: 在 BASE 和工作目录之间。)

这里的 300 只是一个示例修订。

于 2012-08-29T16:18:07.360 回答
0

从那以后,我在我最近的另一篇文章中完全解决了这个问题。为未来的读者发布一个回溯 URL:

VIM - 通过命令行传递冒号命令列表

于 2013-05-23T20:26:56.843 回答