如何在Vimdiff中展开/折叠diff区段?
我今天开始使用vimdiff,想要做一些基于Windows的差异编辑器(比如展开/折叠差异部分,具有完整的文件扩展/只与上面的3个上下文线差异或以下等)。 我目前只知道下面的命令:
键盘快捷键:
-
do
– 从其他窗口获取更改到当前窗口。 -
dp
– 将当前窗口的更改放入另一个窗口。 -
]c
– 跳转到下一个更改。 -
[c
– 跳转到上一个更改。 -
Ctrl + W , w – 切换到另一个分割窗口(CTRL-W CTRL-W做同样的事情,以防你稍后放开CTRL键)
有人能指点我正确的方向,所以我可以复制类似的function?
例如,如果我可以展开/折叠差异线,那就太好了。
除了你提到的那些,我只是经常使用以下几点:
-
:diffupdate
:diffu
– >重新计算差异,在进行多次更改后很有用vim的不再显示最小的变化。 请注意,只有在vimdiff文件被修改的情况下才有效。 否则,使用:-
:e
如果在vimdiff之外修改了文件,则重新加载文件。
-
-
:set noscrollbind
– >暂时禁用两个缓冲区同时滚动,重新启用:set scrollbind
和滚动。
大部分你所要求的是折叠: vim用户手册关于折叠的章节 。 有时我会用diff:
-
zo
– >打开折叠。 -
zc
– >closures折叠。
但你可能会更好地服务于:
-
zr
– >降低折叠水平。 -
zm
– >多一个折叠水平,请。
甚至:
-
zR
– >完全减less折叠,我说! -
zM
– >折叠最多!
你要求的另一件事情,使用n行折叠,可以在vim参考手册的选项部分find,通过diff :
-
set diffopt=<TAB>
,然后更新或添加context:n
。
你也应该看看差异的用户手册部分 。
设置vimdiff忽略大小写
开始vim差异
gvim -d main.sql backup.sql &
我发现,一个文件有一个文件的小写字母的关键字,另一个大写字母在几乎所有其他行上显示差异
:set diffopt+=icase
这dynamic更新屏幕,你可以轻松地再次closures它
其实如果你做Ctrl+WW
,你不需要添加额外的Ctrl
。 做同样的事情。
ctrl + w,w如上所述可用于从窗格到窗格的导航。
现在,您可以单独select一个特定的更改,并将其粘贴到另一个窗格,如下所示。在这里,我给出了一个例如,如果我想将我的代码从窗格1更改为窗格2,当前我的光标在窗格1
-
使用Shift-v突出显示一行,并使用向上或向下键select所需的代码段,然后从下面的第3步继续,将更改粘贴到其他窗格中。
-
使用视觉模式,然后改变它
1点击'v'这将把你带到视觉模式2使用向上或向下键来select你所需的代码3点击,Esc的退出键4现在使用'yy'来复制或'dd'来剪切变化5' ctrl + w,w'导航到窗格2 6单击“p”button,粘贴您所需的更改