Vim 的 Netrw :bprev 错误是否有解决方法?

Is there a workaround for Vim's Netrw :bprev bug?

Vim 的 Netrw 文件浏览器有以下错误:运行 命令 :e。将打开 Netrw,但在 Netrw 关闭后,Vim 的缓冲区列表中有一个潜在缓冲区,无法使用命令 :bprev 遍历。 (:bnext 工作正常。)

此错误在以下位置进行了讨论:

https://www.bountysource.com/issues/45921122-previous-doesn-t-work-with-e-buffer

https://groups.google.com/forum/#!topic/vim_use/zzeQItJQNZI

要复制此错误,请启动 Vim 和 运行 以下命令:

:ls!
:edit ./file1.txt | ls!
:edit ./file2.txt | ls!
:e. #(choose file3.txt in Netrw)
:edit ./file4.txt | ls!
:ls!

此时,您将看到已打开文件的缓冲区以及一些带有路径的缓冲区,以及一个带有[No Name] 的缓冲区。尝试使用

浏览这些缓冲区
:bnext | ls!
:bprev | ls!

你会发现:bnext 成功循环缓冲区,但:bprev 挂在Netrw 缓冲区上。是否有针对此错误的解决方法,以便使用 :bnext 和 :bprev 的缓冲区导航仍然有效?

编辑 2021-11-28:此处提供更好的解释:

https://github.com/ap/vim-buftabline/issues/31

https://github.com/ap/vim-buftabline/issues/25

我通过实验发现,如果我删除 [No Name] 缓冲区之前的路径缓冲区,:bprev 将恢复运行。但是,这很麻烦。

相反,我开始使用 :Explore 打开 Netrw。这不会创建潜在缓冲区,它会触发 :bprev,但我仍然能够浏览我的本地目录树并打开文件进行编辑。