我一直在使用这个小重映射模式,让我可以在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>
答案 0 :(得分:1)
不是winbufnr()
你在寻找什么?
winbufnr({NR})
结果是一个数字,即数字 与窗口{nr}关联的缓冲区。 {nr}可以是窗口编号 或窗口ID。
当{nr}为零时,返回当前窗口中缓冲区的编号。
当窗口{nr}不存在时,返回-1。