Vim: 循环浏览缓冲区时忽略在其他窗格中打开的缓冲区

Vim: ignore buffers open in other panes when cycling through buffers

假设我有两个垂直拆分的窗格并打开了多个缓冲区。我在左窗格中打开了 file-a.txt/buffer 1,我的光标聚焦在右窗格中。在右窗格中,我想循环浏览剩余的打开缓冲区而不经过 file-a.txt/buffer 1.

也就是说,我想在循环浏览另一个窗格中的缓冲区时忽略在其他窗格中打开的缓冲区。这可能吗?

谢谢。

简单的解决方案是检查缓冲区是否在其他 window 中打开。如果是,那么再执行一次bnext即可。

function! Bnext() abort
  bnext                                " Go to next buffer.
  if len(win_findbuf(bufnr('%'))) > 1  " If buffer opened in more than one window,
    call Bnext()                       "  then call func again to go to next one.
  endif
endfunction
nnoremap <leader>b :call Bnext()<CR>