在Vim中区分两个标签


121

场景:我已经打开Vim并粘贴了一些文本。我打开第二个标签,:tabe并在其中粘贴其他一些文本。

目标:我想要第三个选项卡,其输出等效于将两个文本都写入文件并使用打开它们vimdiff

我能找到的最接近的是“将当前缓冲区与文件进行比较”,但是没有找到diff两个打开但未保存的缓冲区。


1
tabe命令是什么?
hhafez

1
@hhafez-在新标签页中打开新缓冲区
Rook

3
它是:tabedit,aka:tabnew的缩写。
TSomKes

Answers:


188

我建议在同一选项卡中打开第二个文件,而不是一个新文件。

这是我通常做的事情:

:edit file1
:diffthis
:vnew
:edit file2
:diffthis

:vnew命令垂直拆分当前视图,因此您可以在此处打开第二个文件。然后:diffthis(或简称:):difft命令应用于每个视图。


1
首先,MacVim似乎没有默认设置,但是我认为您应该能够在终端上键入vimdiff file1.txt file2.txt并敲门而出。
鲁芬2012年

11
你真让我震惊。从此我的生活将不再一样:diffthis。非常感谢。谢谢!
贾斯汀力

3
这太棒了。edit fileN可以仅通过从缓冲区粘贴来替换这些部分,这使您可以区分两个文本块而不必将每个文本都粘贴到tmp文件中(可以进行融合的操作,但是缺少Mac上的可视化比较工具)。它在MacVim中对我来说开箱即用。
yshavit

38

我建议尝试:diffthis:diffsplit


10
:vert diffsplit比起没有差异,传统的差异视图更为明显:vert
短暂

7
您可以:set diffopt + = vertical来使:vert为默认值。
graywh

3
另外,要同时滚动两个窗口::set scrollbind在两个窗口中。
Dmytro Sirenko

如果必须按问题中的选项卡,则无法正常工作。如果可以,:diffsplit我将获得两个连接的缓冲区。
erik

25

当您在垂直拆分中打开两个文件时,运行

:windo diffthis


8
使用:diffoff关闭比较模式
AB

2
但是,如何从两个选项卡更改为垂直拆分?
erik

1

所有选项卡的内容都在缓冲区内。看一下缓冲区:

:buffers

找到正确的数字,该数字应与您当前的标签内容相区别。

打开当前选项卡中的缓冲区(fe缓冲区编号4)

:sb 4

或做垂直视图:

:vertical sb 4

然后您可以简单地将内容与

:windo diffthis

如果您完成了差异分析,则可以输入:

:windo diffoff
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.