vimdiff中如何取消已完成评审行的高亮显示?
解决Vimdiff中标记已评审差异行取消高亮的问题
作为天天用vimdiff做代码评审的老鸟,太懂你这种50+差异行要逐一标记的痛苦了!给你分享几个实用的方法,从临时视觉隐藏到永久标记已确认都有:
方法1:折叠已评审的差异块(最快捷的临时方案)
这是我日常评审用得最多的方法——把已经看完的差异块折叠起来,既看不到高亮,还能聚焦未评审的内容:
- 光标移到目标差异块的任意行
- 按
zf%(如果差异块是成对括号/代码块),或者用V选中整个差异块后按zf完成折叠 - 要展开查看的话,按
zo就行
方法2:永久标记已评审行(取消diff识别)
如果想让vim彻底不再把这些行当成差异(真正标记为已确认),可以用diffupdate命令:
- 用
V选中已经评审完的行范围 - 执行命令:
:'<,'>diffupdate
这个命令会让vim重新计算选中范围内的差异,确认没问题的行就会从高亮列表中移除。
优化:自定义快捷键提升效率
为了不用每次手动敲命令,建议在你的.vimrc里加个映射:
nnoremap <leader>mr :'<,'>diffupdate<CR>
以后选中已评审行,按<leader>mr(比如你把leader设为逗号的话就是,mr)就能一键标记取消高亮。
方法3:临时聚焦当前差异块(不修改diff状态)
如果只是想临时隐藏其他已评审块的高亮,专注当前正在看的内容,可以调整diff的上下文设置:
- 执行命令隐藏其他块高亮:
:set diffopt+=context:0
这时只有光标所在的差异块会高亮,其他块会恢复普通文本显示
- 要恢复原来的多块高亮状态,执行:
:set diffopt-=context:0
注意事项
diffupdate会重新计算差异,如果之后文件有新的修改,可能需要重新执行- 折叠方法只是视觉隐藏,不会改变vim对差异的识别,适合快速评审时临时整理视图
内容的提问来源于stack exchange,提问作者The Vivandiere
相关产品推荐
相关产品推荐

