Vim-窗口中打开缓冲区的动态列表

Vim-窗口中打开缓冲区的动态列表

我研究了几种在 Vim 中维护打开缓冲区列表的方法,其中一些方法非常好,但似乎没有一种能达到我想要的效果。很可能没有我想要的方法,问问也无妨。

我一直在 GVim 中使用 NERDTree,我喜欢将信息放在一个细长的左侧窗口中的想法。我整理了一个方便的图表来说明我希望我的环境是什么样子:

|--------|---------------------------------------|
|        |                                       | 
|        |                                       | 
|NERDTree|           Windows                     | 
|        |                                       | 
|        |                                       | 
|        |                                       | 
|--------|                                       |
|        |                                       | 
|        |                                       | 
|  List  |                                       | 
|   of   |                                       | 
|  Open  |                                       | 
| Buffers|                                       | 
|        |                                       | 
|        |                                       | 
|--------|---------------------------------------|

我的问题是:是否有一种 vim 原生或插件支持的方法来维护当前打开的缓冲区列表并在类似于 NERDTree 的窗口内从该列表中选择/编辑/关闭?

我理解这种方法可能与Vim 的做事方式,如果您觉得我遗漏了有关如何在 Vim 会话中管理多个文件的一些信息,请留下评论并提出建议!

答案1

你搜索过 vim.org 的插件库吗?有数十个缓冲区切换插件您可以选择缓冲盖特或者选择缓冲区。或者,它们中的大多数都是编译成Vim wiki 上的一个不错的列表


正如您在问题的最后一部分提到的,这种系统并不符合每个人的口味。

始终打开所有这些菜单、按钮和列表:打开的缓冲区列表仅在您确实需要跳转到另一个缓冲区时才有用,在我看来,让这样的列表保持打开状态似乎是在浪费空间。 同样的情况也适用于增强状态行。

我用相同的插件用于快速切换缓冲区并快速探索当前正在编辑的文件周围的文件系统。使用,f(文件)或,b(缓冲区)调用,完成后窗口会消失。完美。有其他 相似的 插件如果您喜欢这个想法,就尝试一下吧。

编辑

我觉得有必要添加一个 CtrlP 运行的动态 GIF,切换缓冲区:

使用 CtrlP 切换缓冲区

完編

原生版本:sb <Tab>也相当简洁,但不够吸引人。它不支持模糊匹配,但具有一些很大的优势:它是内置的,并且工作方式类似:e <Tab>:vs <Tab>等等。

答案2

答案3

有一种方法可以做到这一点管理者插件。在此截屏我将 NERDTree 和 MiniBufExpl(github:techlivezheng/vim-plugin-minibufexpl,最新提交于 349a9fbb)插件组合在同一个垂直分割上,并使用 F4 进行切换。理论上,此解决方案应该适用于任何其他插件组合。

我的 .vimrc 示例

“{{ MiniBufExpl 配置
let g:miniBufExplVSplit = 20 " 垂直打开
let g:miniBufExplSplitToEdge = 0 " 相对于前一个窗口打开 (NERDTree)
" }}} MiniBufExpl 配置

“{{ winmanager 配置
“注册插件
让 g:NERDTree_title='NERD 树'
让 g:MiniBufExpl_title='MiniBufExpl'

“设置布局
让 g:winManagerWindowLayout='NERDTree|MiniBufExpl'

“NERDTree 的处理程序
函数!NERDTree_Start()
    执行'NERDTree'
结束函数

“MiniBufExpl 的处理程序
函数!MiniBufExpl_Start()
    执行‘MBEOpen’
结束函数

“映射切换拆分到 F4
nmap <F4> :WMToggle
" }}} winmanager 配置

问题:

  • NERDTree 不使用 winmanager 创建的缓冲区,而是在其自己的缓冲区中打开......
  • ...因此 winmanager 缓冲区保持未使用状态
  • 在缓冲区之间跳转时,MiniBufExpl 无法正确更新自身

我所实现的行为远非完美,但这是一个好的开始。

相关内容