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


15

令我感到惊讶的是我还没有找到答案,但是也许我遗漏了一些明显的东西:是否可以在每个窗口中保留一个缓冲区列表?我经常有大约4个分割,每个分割通常都有一个特定的用途:一个CSS,另一个JS,另一个HTML。

我可能正在寻找的是能够完成此任务的插件。最近,我一直在使用BufExplorer,它的设置确实允许您按选项卡而不是按窗口保留其缓冲区列表。

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


您找不到它,因为它尚未构建。在本问答中找到了最近的邻居
新亚历山大(Alexanderia)

Answers:


1

恕我直言,您真正需要的是工作空间经理。

您可以在http://www.vim.org/scripts/script.php?script_id=1410找到vim

它将为您提供以下命令:

: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. 

我有一个使用Workspace Manager的屏幕快照,在我的fb上发布了4个以上的窗口,您可以在那里查看它(是公开的)。

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

在后一种情况下,工作空间管理器将用作缓冲区列表。如您在屏幕快照中所见,我将文件分为不同的组。

AFIK与您所能获得的差不多。

美好的一天。


0

为什么鞋拔子将这种级别的窗口管理转换为vim?我偶尔会使用拆分窗口-我已将Ctrl-F映射到在拆分窗口中出现的文件查找样式grep命令,并且有时也会使用vimdiff。

但是,您真的要在vim中进行永久窗口管理吗?PuTTY连接管理器和各种终端仿真器使您可以根据需要拆分终端,然后在每个终端中运行单独的vim会话。


您可以在vim实例之间共享寄存器吗?这始终是我不希望运行多个vim实例的第一原因:我不能yank从一个put到另一个。
brianmearns 2014年

0

在左侧打开NERDTree。>

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

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

现在,我想完全退出此缓冲区2,然后返回到编辑缓冲区1,但是当我对缓冲区2执行:q时,我最终只看了一个大的NERDTree,不得不重新显示buffer1。... [显示报价的其余部分]

我没有使用Nerdtree,但听起来您应该输入Ctrl-^(可能是Ctrl + 6键)才能切换回buffer1。


0

我不知道这样的插件。

打开特定文件缓冲区的一种快速方法是使用FuzzyFinder的:FufBuffer命令。它将打开所有已打开缓冲区的列表(当前窗口中的缓冲区除外),以方便访问。我已经绑定到了,fn。例如,它可以让我快速查看带有,fncss的所有css文件或带有,fnjs的所有js文件。FuzzyFinder非常适合轻松完成(而不只是此特定用例)所需的文件/缓冲区/目录/等。

但是,我怀疑您正在寻找允许您使用:bn和:bN(或您映射到的任何内容,无法记住ctrl-n / p是默认设置还是我的自定义设置)的选项,以在以下缓冲区之间切换特定的文件类型。

也许,您可以制作一个插件,向您提供命令以允许切换到与当前窗口中当前缓冲区的文件类型相同的上一个/下一个缓冲区。


顺便说一句,我认为管理这些单独的缓冲区列表将是一件痛苦的事,而不是那么轻松。
汉尼斯

-1

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


这确实是一条评论,但我还不能发表评论,所以我发布了一个被否决的答案,因为它没有回答问题。去搞清楚。
mondaugen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.