MacVim - 如何正确设置vimdiff以使用SourceTree?

时间:2012-08-16 09:52:43

标签: vim version-control macvim vimdiff

我使用MacVim作为编辑器,使用Atlassian SourceTree(v1.5.3)作为我的VCS前端。我安装了MacVim的命令行帮助程序脚本mvim,并且mvimdiff已正确符号链接。

我想在SourceTree中使用mvimdiff作为外部差异工具,用于不同类型的VCS存储库(Git,Hg,SVN)。

当通过SourceTree“外部差异”文件/合并冲突时,两个差异窗口都是空的。

通过mvimdiff file1 file2手动区分文件可以正常工作。

这些是我在SourceTree中的设置:http://i.stack.imgur.com/2eQZD.png

如何设置MacVim / gVim以使用SourceTree?

2 个答案:

答案 0 :(得分:0)

您在diff配置中的设置几乎是正确的,您只需要进行一些调整以确保(例如)git可以找到二进制文件。在git文档中,它声明二进制文件(在您的情况下为mvimdiff)必须在您的路径中或者给出其完整路径。

为您提供两个选项,要么确保mvimdiff/usr/local/bin中存在/usr/bin(或Mac上默认上的其他位置)路径),或者做我刚刚完成和测试的事情:将mvim脚本放在$HOME目录中的已知位置,并使用~引用它(git的唯一扩展)支持)。

所以,我在我的Home文件夹中创建了一个名为.bin的文件夹(带有一个前导点以将其隐藏在Finder中),然后将mvim脚本放在那里。然后在SourceTree中我将'Diff Command'设置为

~/.bin/mvim -d

我设置的'Arguments'与你的相似,但我把它们放在引号中来处理带有空格和其他特殊字符的文件,所以

"$LOCAL" "$REMOTE"

注意:我没有使用hg或subversion对此进行测试,但由于svn支持git-svn,因此它也适用于该配置中的subversion。

答案 1 :(得分:0)

你必须传递选项-f告诉MacVim不要分叉一个新进程,但似乎SourceTree没有正确传递参数。

所以,要使用mvimdiff,只需将mvim复制为mvimdiff(而不是符号链接)并从

更改mvimdiff的最后一行但是3行
exec "$binary" -g $opts ${1:+"$@"}

exec "$binary" -g -f $opts ${1:+"$@"}