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

Vim:在缓冲区中循环时忽略其他窗格中打开的缓冲区,vim,neovim,Vim,Neovim,假设我有两个垂直分割的窗格,其中打开了多个缓冲区。我在左窗格中打开了文件-a.txt/buffer 1,光标集中在右窗格上。在右侧窗格中,我希望循环浏览其余打开的缓冲区,而不必浏览文件-a.txt/buffer 1 也就是说,当在另一个窗格中的缓冲区中循环时,我希望忽略在其他窗格中打开的缓冲区。这可能吗 谢谢。简单的解决方案是检查缓冲区是否在其他窗口中打开。如果是,则只需再次执行bnext 简单的解决方案是检查缓冲区是否在其他窗口中打开。如果是,则只需再次执行bnext 太棒了!这些评论很好,很

假设我有两个垂直分割的窗格,其中打开了多个缓冲区。我在左窗格中打开了文件-a.txt/buffer 1,光标集中在右窗格上。在右侧窗格中,我希望循环浏览其余打开的缓冲区,而不必浏览文件-a.txt/buffer 1

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


谢谢。

简单的解决方案是检查缓冲区是否在其他窗口中打开。如果是,则只需再次执行bnext


简单的解决方案是检查缓冲区是否在其他窗口中打开。如果是,则只需再次执行bnext


太棒了!这些评论很好,很容易理解。你能帮我理解最上面的一行吗,具体是什么意思!和中止是必需的?这都在:h函数:When!使用时,如果存在现有函数,则会以静默方式替换该函数。当添加abort参数时,一旦检测到错误,函数就会中止。这太神奇了!这些评论很好,很容易理解。你能帮我理解最上面的一行吗,具体是什么意思!和中止是必需的?这都在:h函数:When!使用时,如果存在现有函数,则会以静默方式替换该函数。添加abort参数后,一旦检测到错误,函数将立即中止。
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 function again to go next one.
  endif
endfunction
nnoremap <leader>b :call Bnext()<CR>