Vimdiff:显示总数的变化
发布时间:2020-12-15 19:07:32 所属栏目:安全 来源:网络整理
导读:在(g)vim中分割两个文件时,是否可以显示总数?我想这相当于计算折叠次数,但是我也不知道如何做。 理想情况下,我想要一个消息,其中显示“更改1的12”,这将更新,因为我循环使用] c。 我将办公室的一些成员转化为Vim的奇迹,但Vimdiff是一贯的bugbear。
在(g)vim中分割两个文件时,是否可以显示总数?我想这相当于计算折叠次数,但是我也不知道如何做。
理想情况下,我想要一个消息,其中显示“更改1的12”,这将更新,因为我循环使用] c。 我将办公室的一些成员转化为Vim的奇迹,但Vimdiff是一贯的bugbear。
好的,这是最好的,我可以想出自己。此函数从当前缓冲区的顶部开始,并使用[c]运动来移动更改,直到] c不再具有效果。它返回更改的数量(如果光标不是diff缓冲区,则返回0)。
function! CountDiffs() let winview = winsaveview() let num_diffs = 0 if &diff let pos = getpos(".") keepj sil exe 'normal! G' let lnum = 1 let moved = 1 while moved let startl = line(".") keepj sil exe 'normal! [c' let moved = line(".") - startl if moved let num_diffs+=1 endif endwhile call winrestview(winview) call setpos(".",pos) endif return num_diffs endfunction 似乎工作正常,并且在包含在我的状态线时并不是一个明显的表现。 对于找到当前变化的“数”,这里是使用向后的[c运动来计算光标位置之前的变化次数的函数。返回的值不是很正确…我想也许它应该只返回一个数字,如果光标在“改变的文本内”,而不是在更改的第一行之后。 function! CurrentDiff() if &diff let num_diff = 0 let winview = winsaveview() let pos = getpos(".") let moved = 1 while moved let startl = line(".") keepj sil exe 'normal! [c' let moved = line(".") - startl if moved let num_diff+=1 endif endwhile call winrestview(winview) call setpos(".",pos) return num_diff endif endfunction 再次,它似乎在我的状态线上表现自己,并不影响光标的移动。数字更新正确,因为更改也从缓冲区复制。 一旦解决了问题,我可能会考虑将其作为Vim网站上的插件上传。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Bootstrap table 服务器端分页示例
- angular – 错误:无法解析ApplicationModule的所有参数:(
- angular – Karma Start Fails – HeadlessChrome – ERROR
- bootstrap table实现x-editable的行单元格编辑及解决数据Em
- 12款优秀的 Twitter Bootstrap 组件和工具
- Docker Compose – 图像名称
- bash – 每次创建新用户时执行shell脚本
- Bootstrap与Fancybox不兼容的处理方法
- scala – Spark 2.2 Null-safe Left Outer Join Null Point
- angularjs – 使用Angular&Express登录用户的正确方法是