gpt4 book ai didi

vim - 使用 vimdiff 合并更改

转载 作者:行者123 更新时间:2023-12-03 07:06:15 51 4
gpt4 key购买 nike

就我而言,我有两个文件 file1 和 file2。使用 vimdiff,我想合并更改,如下所示:

  1. 第一个区别是,将文件 1 中的行放在文件 2 中的行上方。这意味着差异,例如 file2 中的 Listing 2List 2 应该是 List 2 后跟 Listing 2 在合并文件。
  2. 在另一个更改中反转大小写。

快照如下所示。

enter image description here

我们如何使用 vimdiff 来实现这一点?

最佳答案

您可以使用以下基本命令进行合并:

  • do - 将其他窗口的更改获取到当前窗口。

  • dp - 将当前窗口的更改放入另一个窗口。

  • ]c - 跳转到下一个更改。

  • [c - 跳转到上一个更改。

  • zo - 打开折叠线。

  • zc - 关闭折叠线。

  • zr - 完全展开两个文件。

  • zm - 完全折叠两个文件。

  • Ctrlww - 更改窗口。

  • :only | wq - 退出其他窗口,写入并退出。

需要注意的怪癖

  • 如果您正处于变革阶段(或者只是一行更改下的一行)在正常模式下,但在可视模式下则不然。

  • 撤消命令仅在已更改的缓冲区中起作用,因此,如果您使用 dp 并且改变了主意,则需要切换到要撤消的其他缓冲区。

  • :diffupdate将重新扫描文件中的更改(Vim 可能会感到困惑,并显示虚假内容)。

可视化模式和更细粒度的控制

在可视模式下选择文本行时,必须使用普通命令:

  • :'<,'>diffget
  • :'<,'>diffput .

例如:

  1. 进入可视模式并标记一些文本/线条。
  2. 然后输入 :diffput将选定的行推送到其他文件或 :diffget从另一个文件中获取选定的行。

详细说明一下:这意味着如果存在由多行组成的更改 block ,则选择行的子集并发出 :diffput只会在其他缓冲区中应用这些更改。

( :diffget:diffput 也接受范围,有关更多信息,请参阅 :h copy-diffs。)

比较 Vim 内的两个缓冲区

如果您分片加载两个文件( :vs:sp ),您可以执行 :diffthis 。在每个窗口上并实现已加载到缓冲区中的文件的差异。

:diffoff可用于关闭 diff 模式。

This Vimcasts post and video在实践中展示这一点。

如何应用缓冲区之间的所有更改

  • 确保所有参与缓冲区均处于 diff 模式(请参阅 :h start-vimdiff)

  • a。获取从缓冲区到当前缓冲区的更改: :%diffget <buffer-number>

  • b。将当前缓冲区中的所有更改放入另一个缓冲区中: :%diffput <buffer-number>

  • ( :% 是选择整个文件的范围;请参阅 :h :%:ls 将显示当前打开的缓冲区。)

    关于vim - 使用 vimdiff 合并更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27832630/

    51 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com