..
neovim比较与合并文件
Neovim内置了方便好用的diff模式,让我们能够双手不离开键盘快速完成文件的比对和合并。
本文整理了使用Neovim比较和合并两个文件的一些操作方法。
启动 Diff 模式
从终端直接启动
在shell中,最直接的方式是使用 -d 参数或直接调用 nvimdiff
nvim -d file1 file2
# 或者
nvimdiff file1 file2
默认情况下,Nvim 会开启左右垂直分屏,左侧为 file1,右侧为 file2。内容相同的行会被自动折叠,存在差异的行会被高亮显示。
在Nvim内部启动
如果你已经用Nvim打开了 file1,可以直接使用命令水平或垂直分屏打开另一个文件进行比较:
- 垂直分屏对比:
:vert diffsplit file2 - 水平分屏对比:
:diffsplit file2
如果当前有两个普通的切分窗口,想将它们转为对比模式,只需在两个窗口分别执行 :diffthis 即可。
差异导航 (Navigation)
进入Diff模式后,最常用的操作是在不同的“差异块(Hunk)”之间跳转:
]c:跳到下一个差异点 (Next change)[c:跳到上一个差异点 (Previous change)
合并冲突 (Merge)
定位到差异点后,你需要决定是保留当前窗口的更改,还是拉取另一个窗口的更改。Nvim提供了两个极其简练的快捷键:
do(Diff Obtain):拉取。将另一个窗口中的差异内容复制并覆盖到当前光标所在的窗口。dp(Diff Put):推送。将当前光标所在窗口的差异内容复制并覆盖到另一个窗口。
视图控制与刷新
刷新差异高亮
有时候你在Diff模式下手动插入或删除了某些代码,Nvim的高亮色块可能会短暂失效或不同步。此时只需强制刷新即可::diffupdate 或直接:diffu
代码折叠控制
为了让我们更方便地对比有差异的部分,相同的内容默认被折叠(Folded)。你可以使用快捷键进行控制:
zo:打开光标所在的折叠 (Open fold)zc:关闭光标所在的折叠 (Close fold)zR:打开当前文件中的所有折叠zM:关闭当前文件中的所有折叠
调整分屏布局
如果代码行太长,左右分屏看着吃力,你可以利用窗口管理快捷键快速切换布局:
<C-w> J:将当前切分窗口移到下方(变为上下水平分屏)<C-w> H:将当前切分窗口移到左侧(恢复左右垂直分屏)
保存与退出
合并完成后,和普通的Nvim操作一样保存并退出:
:wqa:保存所有文件并退出。:qa!:放弃所有更改,强制退出。
关于vim如何退出,最权威的教程为: How do I exit Vim?
掌握上述操作后,就可以使用Neovim愉快地比较和合并文件了。