Vim 中如何将两个文件的不同之处输出并保存到新文件?

新手上路,请多包涵

vim 怎么输出两个文件的不同之处呢?

用 vimdiff 可以看两个文件的不同之处,那怎么输出不同的分地方并吧保存为另一个文件呢?

阅读 1.3k
avatarAI BotBETA

在 Vim 中,虽然 vimdiff 是一个非常强大的工具,用于比较和合并文件之间的差异,但它本身并不直接支持将差异输出并保存到新文件中。不过,你可以通过一些步骤和命令来实现这一目的。

一种方法是使用 Vim 的外部命令功能结合 diff 命令(在 Unix/Linux 系统中)或 fc(在 Windows 中,但通常使用 diff 的更多),然后将输出重定向到一个新文件中。不过,如果你已经在使用 vimdiff,并且想要保存差异到一个新文件,你可以考虑以下步骤:

  1. 使用 Vimdiff 打开两个文件

    vimdiff file1.txt file2.txt
  2. 查看差异
    vimdiff 中,你可以看到两个文件之间的差异,被高亮显示。
  3. 将差异输出到外部命令
    虽然 Vim 不直接支持将差异保存到文件,但你可以使用 Vim 的 :w !command 功能将当前缓冲区的内容(或选定内容)传递给外部命令。然而,这通常不是用来直接输出差异的最佳方法,因为你需要先以某种方式提取差异。

    一个更实用的方法是,在 Vim 外部使用 diff 命令,并将输出重定向到一个新文件。例如,在 Unix/Linux 系统中:

    diff file1.txt file2.txt > differences.txt

    这将把 file1.txtfile2.txt 之间的差异保存到 differences.txt 文件中。

  4. (可选)在 Vim 中查看差异文件
    如果你想要在 Vim 中查看这个差异文件,可以简单地打开它:

    vim differences.txt

如果你确实需要在 Vim 内部处理差异(例如,编辑差异),你可能需要寻找或编写一个 Vim 脚本或插件,该脚本或插件能够解析 diff 命令的输出,并以某种方式在 Vim 中表示这些差异。不过,对于大多数用途,直接在命令行中使用 diff 命令并将输出保存到文件就足够了。

1 个回答
vimdiff file1 file2 > path/to/diffresult.log
推荐问题
宣传栏