【问题标题】:Side-by-side view in Vim of svn-diff for entire directoryVim 中整个目录的 svn-diff 并排视图
【发布时间】:2012-08-29 16:01:30
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: macos svn vim diff macvim


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      AuVimDiff full HEAD 300
      

      无需手动签出即可获得两个修订版之间的差异:

      AuVimDiff file file1 HEAD 300
      

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

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

      【讨论】:

        【解决方案3】:

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

        VIM - Passing colon-commands list via command-line

        【讨论】:

          猜你喜欢
          • 2011-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-03
          • 1970-01-01
          相关资源
          最近更新 更多