2012-08-16 25 views
3

我使用MacVim作爲我的編輯器和Atlassian SourceTree(v1.5.3)作爲我的VCS前端。我安裝了MacVim的命令行幫助程序腳本mvim,並正確地鏈接了mvimdiffMacVim - 如何正確設置vimdiff以使用SourceTree?

我想使用mvimdiff作爲SourceTree中不同類型的VCS存儲庫(Git,Hg,SVN)的外部差異工具。

當通過SourceTree「外部比較文件/合併衝突」時,兩個差異窗口都是空的。

通過mvimdiff file1 file2手動區分文件可正常工作。

這是我的設置在SourceTree:http://i.stack.imgur.com/2eQZD.png

我如何設置的MacVim/gVim打開SourceTree工作?

+0

你試過給人一種絕對路徑mvimdiff? – Conner 2012-08-16 18:32:39

回答

0

您在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或顛覆測試這一點,但由於svn通過git-svn支持,應該在配置顛覆工作了。

+0

這是行不通的。由於某些原因,SourceTree不會正確地將$ LOCAL變量傳播給vim。奇怪的是,它可以在任何其他編輯器中使用,但由於某些原因vim無法找到該文件並創建一個新的空的文件。我有一種感覺,也許是因爲vim打開速度過快,SourceTree無法以足夠快的速度將源代碼從回購站點提取到臨時文件。我不知道 – Agzam 2014-12-16 00:26:35

+0

哦,其實我發現了這個問題。無論出於何種原因,macvim在文件名WTF之前添加了另一個斜槓? – Agzam 2014-12-16 00:54:53

0

你必須通過選項-f告訴MacVim不要fork一個新的進程,但似乎SourceTree不能正確傳遞參數。

因此,使用mvimdiff,只需複製mvim爲mvimdiff(而不是符號鏈接的話)並改變從

exec "$binary" -g $opts ${1:+"[email protected]"} 

mvimdiff的最後,但3號線到

exec "$binary" -g -f $opts ${1:+"[email protected]"}