获取窗口内的缓冲区数量

时间:2018-01-17 17:51:30

标签: vim

我一直在使用这个小重映射模式,让我可以在vim中处理三向差异。

autocmd VimEnter,TabEnter * if(&diff) |
    \nnoremap do< :exe 'diffget' winnr()-1<CR>:diffupdate<CR> ]c |
    \nnoremap do> :exe 'diffget' winnr()+1<CR>:diffupdate<CR> ]c |
    \nnoremap dp< :exe 'diffput' winnr()-1<CR>:diffupdate<CR> ]c |
    \nnoremap dp> :exe 'diffput' winnr()+1<CR>:diffupdate<CR> ]c |
\endif

但现在我正在尝试添加包含缓冲区的一些双向差异视图的新选项卡。我相当肯定上面的代码只能运行,因为winnr()碰巧与窗口win关联的缓冲区数相同,只需运行带有三个文件的vimdiff。但是添加双向diff选项卡,winnr()不再与缓冲区编号对齐,我无法在vim文档中找到有关如何根据窗口获取缓冲区数量的任何内容。 / p>

1 个答案:

答案 0 :(得分:1)

不是winbufnr()你在寻找什么?

  

winbufnr({NR})

     

结果是一个数字,即数字   与窗口{nr}关联的缓冲区。 {nr}可以是窗口编号   或窗口ID。

     

当{nr}为零时,返回当前窗口中缓冲区的编号。

     

当窗口{nr}不存在时,返回-1。