Vimdiff:显示总数的变化

在(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网站上的插件上传

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...