如何在 Vim 中为每个窗口保留一个缓冲区列表?

如何在 Vim 中为每个窗口保留一个缓冲区列表?

我很惊讶我没能找到这个问题的答案,但也许我忽略了一些显而易见的东西:是否有可能保留一个缓冲区列表每个窗口? 我通常有大约 4 个分割,每个分割通常都有特定的用途:一个分割 CSS,另一个分割 JS,其他几个分割 HTML,等等。

我可能正在寻找一个可以实现这一点的插件。最近我一直在使用 BufExplorer,它有一个设置允许您按选项卡(而不是按窗口)保留其缓冲区列表。

我真的很喜欢 BufExplorer 的 MRU 列表,但我发现它基于我的全局缓冲区列表很烦人 - 我想要的是每个窗口的 MRU 历史记录。

答案1

恕我直言,您真正需要的是一个工作空间管理器。

你可以找到一个适用于 vim @http://www.vim.org/scripts/script.php?script_id=1410

它将为您提供以下命令:

:WsAddFile              Add a new file to the workspace.                  
:WsAddGroup             Add a new group to the workspace.                 
:WsClose                Close the workspace window.                       
:WsInsertFile           Insert a file.                                    
:WsInsertGroup  Insert a group.                                           
:WsOpen         Open a workspace and display it in a window.              
:WsRun          Run a command using the selected unquoted file names.     
:WsRunq         Run a command using the selected quoted file names.       
:WsSave         Save the workspace.                                       
:WsSessionOpen  Open the workspace and Vim session.                       
:WsSessionSave  Save the workspace and the Vim session.                   
:WsToggle               Open or Close the workspace window. 

我在自己的电脑上发布了一张使用工作区管理器的屏幕截图,其中有 4 个以上的窗口脸书,您可以在那里查看它(它是公开的)。

它并不完全是您想要的缓冲区列表,但您可以在不同的窗口中打开文件,也可以在同一个窗口中的多个缓冲区中打开文件。

在后一种情况下,工作区管理器将充当缓冲区列表。如您在屏幕截图中看到的,我将文件分组到不同的组中。

这已经是你能得到的最接近的结果了,AFIK。

再会。

答案2

为什么要将这种级别的窗口管理强行塞进 vim?我确实偶尔会使用分割窗口 - 我将 Ctrl-F 映射到分割窗口中出现的文件内查找样式的 grep 命令,并且我有时也会使用 vimdiff。

但是你真的想要在 vim 中进行永久窗口管理吗?PuTTY 连接管理器和各种终端仿真器可让你按需要分割终端,然后在每个终端中运行单独的 vim 会话。

答案3

在左侧打开 NERDTree。>

我打开了多个缓冲区(主视图中只有一个可见...称之为“缓冲区 1”)

我现在转到 NERDTree 并选择另一个我只想快速查看或从中复制一些内容的文件。因此,我从 NERDTree 打开该文件,并且缓冲区 1 已正确隐藏,我现在正在查看我刚刚打开的缓冲区(称为缓冲区 2)

我现在想完全退出这个缓冲区 2 并返回编辑缓冲区 1,但是当我在缓冲区 2 上执行 :q 时,我最终只看到一个大的 NERDTree,我必须重新显示缓冲区 1。... [显示其余引用]

我不使用 Nerdtree,但听起来您应该输入 Ctrl-^(可能是 Ctrl + 6 键)来切换回缓冲区 1。

答案4

这不是完整的答案,但似乎 vim 为每个窗口保留了单独的 # 和 % 缓冲区。因此,您可以在一个窗口中快速切换两个文件(使用 CTRL-^),在另一个窗口中切换两个不同的文件。不过,缓冲区列表仍然是您添加的所有缓冲区。

相关内容