在整个目录的svn-diff的Vim中并排查看

时间:2012-08-29 16:01:30

标签: macos svn vim diff macvim

我的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 -d称为diff工具,而不是vimdiff,因为MacVim应用程序似乎没有附带vimdiff,所以我会使用启动应用程序时Vim的错误版本

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

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

    谢谢。

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

您可以尝试我的aurum插件,它附带:AuVimDiff命令,该命令也可以通过vimdiff拆分查看多个标签中的所有更改:

AuVimDiff full HEAD 300

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

AuVimDiff file file1 HEAD 300

file file1部分是可选的,如果省略,它将打开带有当前文件的diffsplit。所有修订也是可选的,因为subversion指定一个修订版正在将其与工作目录中的文件区分开,并且指定没有修订版就像{ {1}}:在BASE和工作目录之间。)

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

答案 2 :(得分:0)

我已经在另一篇最近的帖子中完全解决了这个问题。为未来的读者发布一个回溯URL:

VIM - Passing colon-commands list via command-line