MacVim - 如何正确设置 vimdiff 以使用 SourceTree?
Posted
技术标签:
【中文标题】MacVim - 如何正确设置 vimdiff 以使用 SourceTree?【英文标题】:MacVim - How to properly set up vimdiff to work with SourceTree? 【发布时间】:2012-08-12 15:44:41 【问题描述】:我使用 MacVim 作为编辑器,使用 Atlassian SourceTree (v1.5.3) 作为 VCS 前端。我已经安装了 MacVim 的命令行帮助脚本 mvim
和 mvimdiff
正确符号链接。
我想使用 mvimdiff
作为 SourceTree 中不同类型的 VCS 存储库(Git、Hg、SVN)的外部差异工具。
当通过 SourceTree “外部比较”文件/合并冲突时,两个比较窗口都是空的。
通过mvimdiff file1 file2
手动区分文件可以正常工作。
这些是我在 SourceTree 中的设置:http://i.stack.imgur.com/2eQZD.png
如何设置 MacVim/gVim 以使用 SourceTree?
【问题讨论】:
你试过给 mvimdiff 一个绝对路径吗? 【参考方案1】:你必须传递选项 -f 来告诉 MacVim 不要派生一个新进程,但 SourceTree 似乎没有正确传递参数。
因此,要使用 mvimdiff,只需将 mvim 复制为 mvimdiff(而不是符号链接),然后将 mvimdiff 的最后一行更改为 3 行
exec "$binary" -g $opts $1:+"$@"
到
exec "$binary" -g -f $opts $1:+"$@"
【讨论】:
【参考方案2】:您在 diff 配置中的设置几乎是正确的,您只需稍作调整以确保(例如)git 可以找到二进制文件。在 git 文档中,它指出二进制文件(在您的情况下为 mvimdiff
)必须在您的路径中,否则给出其完整路径。
这让您有两个选择,要么确保 mvimdiff
存在于 /usr/local/bin
或 /usr/bin
(或 Mac 的 默认 路径上的其他位置),要么执行我刚刚完成并测试:将mvim
脚本放在您的$HOME
目录中的一个已知位置,并使用~
(git 支持的唯一扩展)在那里引用它。
所以,我在我的主文件夹中创建了一个名为 .bin
的文件夹(用一个前导点将其隐藏在 Finder 中),然后将 mvim 脚本放在那里。然后在 SourceTree 中,我将“Diff 命令”设置为
~/.bin/mvim -d
我已经将“参数”设置为与您所拥有的类似,但我将它们放在引号中以处理其中包含空格和其他特殊字符的文件,所以
"$LOCAL" "$REMOTE"
注意:我没有使用 hg
或 subversion 对此进行测试,但由于 svn
是通过 git-svn
支持的,因此它也应该适用于该配置中的 subversion。
【讨论】:
那行不通。由于某种原因,SourceTree 没有正确地将 $LOCAL 变量传播到 vim。很奇怪,它可以在任何其他编辑器中使用,但由于某种原因,vim 找不到该文件并创建一个新的空文件。我有一种感觉,可能是因为 vim 打开速度太快,SourceTree 无法足够快地将源代码从 repo 提取到临时文件中。我不知道 哦,其实我发现了问题。无论出于何种原因,macvim 在文件名 WTF 之前添加了另一个斜杠?以上是关于MacVim - 如何正确设置 vimdiff 以使用 SourceTree?的主要内容,如果未能解决你的问题,请参考以下文章
vimdiff对比两个文件如何把不一样的同步到另一个文件呢?