MacVim-如何正确设置vimdiff以使用SourceTree?
我使用MacVim作为我的编辑器,使用Atlassian SourceTree(v1.5.3)作为我的VCS前端。我已经安装了MacVim的命令行帮助程序脚本MacVim-如何正确设置vimdiff以使用SourceTree?,vim,version-control,macvim,vimdiff,Vim,Version Control,Macvim,Vimdiff,我使用MacVim作为我的编辑器,使用Atlassian SourceTree(v1.5.3)作为我的VCS前端。我已经安装了MacVim的命令行帮助程序脚本mvim,并将mvimdiff正确地进行了符号链接 我想使用mvimdiff作为SourceTree中不同类型VCS存储库(Git、Hg、SVN)的外部diff工具 当“外部差异”通过SourceTree处理文件/合并冲突时,两个差异窗口都是空的 通过mvimdiff file1 file2手动区分文件可以正常工作 以下是我在SourceT
mvim
,并将mvimdiff
正确地进行了符号链接
我想使用mvimdiff
作为SourceTree中不同类型VCS存储库(Git、Hg、SVN)的外部diff工具
当“外部差异”通过SourceTree处理文件/合并冲突时,两个差异窗口都是空的
通过mvimdiff file1 file2
手动区分文件可以正常工作
以下是我在SourceTree中的设置:
如何设置MacVim/gVim以使用SourceTree?您在diff配置中的设置几乎正确,您只需进行一些调整,以确保(例如)git可以找到二进制文件。在git文档中,它声明二进制文件(在您的例子中是
mvimdiff
)必须在您的路径中,否则将给出其完整路径
这就给您留下了两个选项,要么确保mvimdiff
存在于/usr/local/bin
或/usr/bin
(或Mac默认路径上的其他位置),或者做我刚刚做过并测试过的事情:将mvim
脚本放在$HOME
目录中的一个已知位置,并在那里引用~
(git支持的唯一扩展)
因此,我在我的主文件夹中创建了一个名为.bin
的文件夹(带有一个前导点,用于在查找程序中隐藏它),然后将mvim脚本放在其中。然后在SourceTree中,我将“Diff命令”设置为
~/.bin/mvim -d
我已经设置了类似于你们的“参数”,但我把它们放在引号里,用来处理文件中的空格和其他特殊字符,所以
"$LOCAL" "$REMOTE"
注意:我没有用
hg
或subversion测试过这一点,但是由于svn
是通过git svn
支持的,因此在该配置中,它也应该适用于subversion。您必须传递选项-f来告诉MacVim不要派生新进程,但是SourceTree似乎没有正确地传递参数
因此,要使用mvimdiff,只需将mvim复制为mvimdiff(而不是将其符号链接),并将mvimdiff的最后3行从
exec "$binary" -g $opts ${1:+"$@"}
到
你试过给mvimdiff一个绝对路径吗?那不行。出于某些原因,SourceTree无法将$LOCAL变量正确传播到vim。奇怪的是,它可以在任何其他编辑器中工作,但由于某些原因,vim找不到该文件,而是创建了一个新的空文件。我有一种感觉,可能是因为vim打开得太快,SourceTree无法足够快地将源代码从repo提取到临时文件。我不知道事实上我发现了问题。无论出于什么原因,macvim在文件名WTF之前添加了另一个斜杠?
exec "$binary" -g -f $opts ${1:+"$@"}