一个替代MinibufExplorer(Vim)的选择?

33

minibufexplorer 是一个为vim提供的持久化缓冲区管理器,它存在于自己的窗口中。 它显示您打开的所有缓冲区,并使用颜色指示符表示哪些缓冲区当前在窗口中可见,哪些缓冲区有未保存的更改。

这是一个非常棒的插件,我已经着迷于它很长时间了。如果没有持久化缓冲区显示,我现在会感到迷失。

问题在于,minibufexpl容易妨碍其他窗口控制。由于它是正常的vim窗口,因此它的行为与一般窗口相同,如果您想旋转其他工作窗口,就会出现问题。 minibufexplorer的窗口也会随之旋转,这显然是不太理想的。

我真正需要的是一个可以持续显示打开的缓冲区的插件,但不会像窗口一样表现。 我不需要文件导航或任何其他功能,因为我用其他手段处理它们。 也许甚至可以像扩展状态栏那样,能够像minibufexpl一样显示有关缓冲区的信息?


3
我看到一个名为Randy Morris的SO用户正在尝试在状态栏中实现持久化缓冲列表。请见https://github.com/rson/vim-bufstat,但我不确定它是否有效。不过这是一个好主意。 - Xavier T.
看起来很有前途。我一定会稍后检查一下。 - numbers1311407
@Xavier T.:谢谢你的推荐 :) @numbers:我的插件基于下面一个回答中的buftabs.vim的想法。它的设计非常简单,但是还没有经过充分的测试。如果你尝试使用它,我会很感激在github上收到任何反馈。 - Randy Morris
7个回答

36

这太棒了。我已经有大部分时间没有使用 minibufexplorer 了。从明天开始,我可能会再次上瘾。感谢你的发现! - numbers1311407
没问题!今天刚发现的。 - a paid nerd

17

虽然这不是你问题的确切答案,但我认为你可能会发现它有用。

FuzzyFinder 插件提供了很好的开放缓冲区的可视化表示, 并且还提供了一个很棒的方式来在它们之间进行跳转 - 模糊匹配。

它的缓冲区列表不是“持久性的”,也就是说只有在需要时才会显示出来,但我认为这是一个优点:首先,缓冲区列表不会占用宝贵的屏幕空间;其次,使用模糊匹配,我甚至觉得完全不需要看到它。

考虑下面的截图:为了切换到 ext_gcd.py,我只需要按下
,bg,b 调出缓冲区列表,g 对包含字母g的唯一缓冲区进行模糊匹配。

图片描述

P.S:它也适用于文件,我的映射如下:

map <leader>f :FufFileWithCurrentBufferDir **/<C-M> 
map <leader>b :FufBuffer<C-M>

,f 在这种情况下是从当前缓冲区所在的目录开始递归模糊匹配文件。


2
我喜欢fuzzyfinder并经常使用它来打开文件和在缓冲区之间跳转,所以我赞同这个观点。但是,我的问题不在于导航,而是缓冲区的持久显示。我知道这只是因为我太习惯了,如果我停止使用minibufexplorer,可能一周后就会适应。我只是希望在这种情况发生之前找到一个好的解决方案。 - numbers1311407
如果您喜欢这个想法,但不太喜欢fuzzyfinder的实现方式,ctrlp是一个类似的插件。 - idbrii

14

虽然这是一个旧帖子,但如果其他人正在搜索,请查看vim-airline插件。它非常受欢迎,并且与其他插件具有很好的兼容性。

使用g:airline#extensions#bufferline#enabled选项获取您要查找的内容。


3
刚刚切换了一下。你可能也对inlet g:airline#extensions#tabline#buffer_nr_show感兴趣。 - David C. Bishop

9

我非常喜欢 buftabs.vim,因为它可以将我打开的缓冲区信息显示在状态栏中,当我需要在那里输入时,这些信息会以一种清晰明了的方式消失。相比之下,我发现这比minibufexplorer更可取,因为我的光标永远不会意外地停留在只读的临时缓冲区中,这会占用比必要更多的空间。此外,它还可以对:bnext:blast进行某些魔术映射,以便更加“熟悉”地跳转缓冲区。

enter image description here


试一下这个。看起来不错。如果它能够进行颜色高亮就好了。 - numbers1311407
在概念上非常不错。对我来说问题是,我认为我有其他插件竞争那个空间(例如Supertab),当我真的需要标签时,我会看下去发现它们没有被重绘。我需要找时间解决这个问题......这周很忙。 - numbers1311407
1
可能需要一些 powerline 的支持。 - idbrii

6
你可以使用 ctrlp,这是一个用纯 Vimscript 编写的插件,非常 可配置:CtrlPBuffer 打开一个窗口,列出所有打开的缓冲区。
你可以开始输入,它是一个模糊查找器。

1

0

你可以尝试使用 Powerline 的 tabline

我尝试了很多插件,但它们往往会占用命令行或状态栏,或者在有太多选项卡时无法显示所有选项卡。

这里 是一个屏幕截图(顶部栏是 tabline!):

安装 Powerline 后,您需要在 .vimrc 中添加 set showtabline=2

如果您想要跳转到第 8 个缓冲区,:b 8 将跳转到该缓冲区!

希望这能帮到你。


你的截图看起来非常像vim-airline。你确定这个功能不是来自插件吗?tabline选项通常用于标签页,而不是缓冲区。 - numbers1311407
实际上是 Powerline,但你说得对,它来自一个插件,但仍需要进行配置。感谢指出这一点。 - Hahn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接