如何在 Vim 中区分行范围

Cho*_*tom 5 vi vim

我试图确定同一文件中的两个代码块是否相同。有没有办法在 Vi/Vim 中区分两个行范围?

Ren*_*let 4

我将创建两个空缓冲区(:vnew:new),将两个行范围粘贴到它们和:diffthis它们中。例如,您可以定义:

:map q :vnew +put!a^M:new +put!b^M:diffthis^M^W<Down>:diffthis^M
Run Code Online (Sandbox Code Playgroud)

如果要比较两个行范围,请分别在寄存器a和中选择并拉出它们b,然后键入q。这将垂直分割窗口,再次水平分割新窗口,将寄存器a和粘贴b到两个新窗口中,然后比较它们。

为了简化一点,您可以:

:map q y:vnew +put!a^M:new +put!^M:diffthis^M^W<Down>:diffthis^M
Run Code Online (Sandbox Code Playgroud)

第二行范围将是当前在视觉模式下选择的行范围。它可以节省一些按键操作。