ChatGPT解决这个技术问题 Extra ChatGPT

在 Vim 中区分两个选项卡

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

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

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

什么是 tabe 命令?
@hhafez - 在新选项卡中打开一个新缓冲区
它是 :tabedit 的缩写,又名 :tabnew。

A
Aaron Thoma

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

这是我通常做的:

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

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


Fwiw,默认情况下 MacVim 似乎没有这个,但我认为你应该能够去终端并输入 vimdiff file1.txt file2.txt 并将自己击倒。
这太棒了。 edit fileN 部分可以替换为仅从缓冲区粘贴,这样您就可以比较两个文本块,而无需将每个文本都粘贴到一个 tmp 文件中(meld 允许您这样做,但 Mac 上缺少可视 diff 工具)。它在 MacVim 中对我来说是开箱即用的。
j
joeslice

我建议尝试 :diffthis:diffsplit


与没有 :vert 相比,:vert diffsplit 会产生更传统的差异视图
您可以 :set diffopt+=vertical 使 :vert 成为默认值。
此外,要同时滚动两个窗口:两个窗口中的 :set scrollbind
如果我必须使用标签,则不起作用,就像问题中所问的那样。如果我这样做 :diffsplit 我得到两个连接的缓冲区。
A
A B

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

:windo diffthis


使用 :diffoff 关闭差异模式
但是如何从两个选项卡更改为垂直拆分?
s
snap

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

:buffers

找到与当前标签内容不同的内容的正确编号。

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

:sb 4

或者做垂直视图:

:vertical sb 4

然后你可以简单地区分内容

:windo diffthis

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

:windo diffoff