Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MacVim-如何正确设置vimdiff以使用SourceTree?_Vim_Version Control_Macvim_Vimdiff - Fatal编程技术网

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

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

我使用MacVim作为我的编辑器,使用Atlassian SourceTree(v1.5.3)作为我的VCS前端。我已经安装了MacVim的命令行帮助程序脚本
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:+"$@"}