在vim中打开窗口

| 我正在研究一个相当复杂的脚本。我怀疑有几个部分具有几乎相同的代码。我可以(以及如何)在vim中打开文件,在缓冲区上有两个(或更多)窗口,并比较同一文件中窗口的内容吗? vimdiff似乎只能在两个文件上工作。如果我复制了文件并尝试对两个版本进行vimdiff,则diff的原点将锁定在文件的开头。尽管我可以解锁窗口,并将窗口移到文件的各个部分,但我想比较的差异没有显示出来。有任何提示或提示吗?我可以将要比较的部分剪切并粘贴到不同的文件中,然后应用vimdiff,但是当我尝试将单独的文件修补在一起时,我可能会迷失在哪个部分丢失了,我相信必须有一个更简单的方法,更简单的方法。     
已邀请:
我通常要做的是复制
:%w %.alt
:vert diffsplit %.alt
然后快乐地重新排列\'alt \'版本,以使伪匹配位对齐。 请注意,(大概)git包含了一些杂乱的合并/差异能力,它们应该能够检测子文件移动的块更改。 尽管我尚未(实际上)将其付诸实践,但我有一种直觉,即非常好的vim git插件
fugitive
可能能够利用其中的一些功能来简化操作。注意:完全希望这在使用前需要scriptinh,但是我仍然认为分享这个想法会很好(也许您可以先分享一个脚本!)     
我偶尔使用的替代解决方案是linediff.vim,在我看来效果很好。 它允许您使用可视模式从任意缓冲区中选择两个文本正文(或与此相同),并对它们运行vimdiff。这样做的好处是,当您编辑并保存临时差异缓冲区时,会使用更改来更新原始缓冲区,而不进行保存。 我的用例之一是当我要解决与脚本重构和重新排序有关的合并问题时,其中的函数已被移动并且可能也已被修改。为了确保您不会丢失来自任何祖先的任何修改,您可以通过直观地选择它们并运行linediff命令来区分两个函数版本。     

要回复问题请先登录注册