我正在研究一個變得相當複雜的腳本。我懷疑有幾個部分具有幾乎相同的代碼。我可以(以及如何)在vim中打開文件,在緩衝區上有兩個(或多個)窗口,並將窗口的內容在同一個文件中進行區分? vimdiff似乎只適用於兩個文件。如果我製作了該文件的副本並嘗試使用vimdiff這兩個版本,則diff起始位置將保持鎖定在文件的開頭。雖然我可以解除鎖定窗口,並將窗口移動到文件的某些部分,但我想比較這些差異並不顯示出來。任何提示或提示?我可以將需要比較的部分剪切並粘貼到不同的文件中,然後應用vimdiff,但是當我嘗試將單獨的文件修補到一起時,我可能會迷失在從哪裏來的部分,我確信必須有更直接的方法,更簡單的方法。vim中的差異窗口
5
A
回答
2
我最常做的是diff來複制
:%w %.alt
:vert diffsplit %.alt
然後happiliy重新排列的「ALT」版本,這樣的僞匹配位都對齊。
注意(可能)的git包含漂亮的合併/ DIFF牛權力,應該能夠檢測分檔手動擋改變。
雖然我還沒有(實際上)將其付諸實踐,但我有一個預感,那就是vim的git插件fugitive
可能能夠利用這些功能來簡化操作。 注:完全有理由相信這是可用之前需要scriptinh,但我仍然認爲這將是很好的分享這個想法
1
作爲替代(也許你可以共享一個腳本,如果你得到它第一次!)我偶爾使用過的解決方案,在我看來,這個解決方案非常好,是linediff.vim。
它允許您使用視覺模式從任意緩衝區中選擇兩個文本主體(或同樣的事情)並在其上運行vimdiff。它的優點在於,當您編輯並保存臨時差異緩衝區時,您可以使用更改更新原始緩衝區,而無需保存。
我的一個用例是我解決與腳本重構和重新排序有關的合併問題,其中一個函數已被移動並且可能還被修改。爲了確保不會丟失祖先所做的任何修改,您可以通過直觀地選擇它們並運行linediff命令來單獨分析函數的兩個版本。
相關問題
- 1. Vim中的分割窗口
- 2. 瞭解Vim中的窗口
- 3. Python的多Linux窗口差異
- 4. 滑動窗口和擁塞窗口之間的差異
- 5. 移動Safari $(窗口).height()URL欄差異
- 6. Visual Studio代碼審查差異窗口
- 7. 拆分比較差異窗口
- 8. VIM拆分窗口:關注新窗口
- 9. 行與窗口小部件之間的Symfony窗體差異
- 10. C#和VB.NET中的立即窗口行爲差異
- 11. quickfix窗口中的Vim文件路徑
- 12. vim中的多行tabpage窗口
- 13. 使用vim作爲svn的差異
- 14. 差異XLSX出口
- 15. vim python-mode垂直窗口
- 16. vim滾動錯誤窗口
- 17. r的人口差異
- 18. 在vimdiff中打開一個非差異窗口
- 19. 空差異窗口應用補丁在TortoiseSVN中
- 20. 子窗口關閉時可以通知父窗口嗎? (在差異域上)
- 21. 如何在Vim窗口中打開Shell?
- 22. 在OpenGL中重新渲染vim窗口
- 23. 在vim + jslint中使用quickfix窗口
- 24. 如何在vim中翻轉窗口?
- 25. 在python中打開新窗口(如vim)
- 26. vim的Quickfix窗口的替代規則
- 27. 差異QML窗口和項目之間的父子關係
- 28. 在OSX和窗口上的相對路徑差異
- 29. 差異化窗口二進制文件的工具?
- 30. 是什麼這之間的差異,自我,窗口和window.self
好的,使用%來指代當前緩衝區的文件名是好的,我沒有意識到這一點!但我仍然不確定如何重新排列正確的版本,以便匹配的比特被對齊。 :se noscrollbind似乎有幫助,但我怎樣才能讓vim突出顯示兩個窗口之間的差異? – ChrisDR 2011-04-25 15:38:05
我的意思是字面重新排列(我使用C/C#,所以'd2] M'刪除了兩個方法,導航到插入點,'P'和瞧);另外'正確的ALT版本'是'ALT版本'的拼寫錯誤。我知道這仍然是手工勞動,但(除了使用Git的複製/移動檢測的想法),我知道沒有更好的方法。使用臨時副本的技巧很簡單。 – sehe 2011-04-25 15:46:11