当前位置: 首页 > 知识库问答 >
问题:

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

井兴怀
2024-09-26

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

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

共有2个答案

小牛23032
2024-09-26
vimdiff file1 file2 > path/to/diffresult.log
燕砚文
2024-09-26

在 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 命令并将输出保存到文件就足够了。

 类似资料:
  • 本文向大家介绍vim 保存在Vim中编辑的只读文件,包括了vim 保存在Vim中编辑的只读文件的使用技巧和注意事项,需要的朋友参考一下 示例 有时,我们可能会打开一个文件,如果没有使用,我们将没有权限在Vim中进行写入sudo。 使用此命令保存在Vim中编辑的只读文件。 您可以:w!!在其中映射到.vimrc: 如图所示,系统将提示您。 。 按O,文件将被保存。它在vi / vim中保持打开状态,

  • 我想要vim保存我的折叠信息,网上的说法一般是用:mkview和:loadview两个命令。但是如果我将文档的存放路径改变后以前的折叠信息就没有了。 大家有什么方法能让无论如何改变文档的存储路vim都能记住折叠信息吗?

  • 问题内容: 我尝试使用,但它并没有涉及整个结构和层次结构。 另一方面这样做,但我无法保存。 在输出中,我可以将所有子项一个一个地展开,然后选择并复制/粘贴,但是结构非常重要。 问题答案: 更新: 您现在可以右键单击 在“控制台”面板中右键单击>另存为,将记录的消息保存到文件中。 原始答案: 您可以使用下面显示的devtools片段创建console.save方法。它从输入中创建一个FileBlob

  • 我在同一个文件夹中有两个文件:chapter1。Rmd和第2章。Rmd,包括以下内容: 第一章Rmd 第2章Rmd 如何将它们组合成一个pdf输出? 当然,渲染(input=“chapter1.Rmd”,output\u format=“pdf\u document”)可以完美地工作,但渲染(input=“chapter1.Rmd”,input=“chapter2.Rmd”,output\u fo

  • 问题内容: 我在所有技术术语上都不是很好,所以我会尽力解释我的问题。 我已经编写了一个小脚本来打开android SDK并检查连接的设备(使用Windows 10和python 2.7.14)。我得到的代码如下: 一切正常,但我想将最后3行保存到文本文件中。我尝试过使用并将其全部转换为字符串并将其写入文件并关闭它,但是它不起作用。它甚至都没有创建文件,更不用说向它写入任何内容了。 我可能缺少一些关

  • vim合并行问题,把整个文档合并成一行改如何做 我现在已经知道可以使用ggVGJ来完成了 但是一开始我的思路是替换掉换行符 :%s/\v\r\n//g 提示我找不到模式\v\r\n 请问是在哪里错误的