我不懂缓冲区。当我在同一个选项卡上打开3个文件并关闭我的窗口时,我通常会生气地发现,下次我打开其中一个文件时,有奇怪的交换文件徘徊并给我讨厌的消息。但我一次又一次地读到,这些东西是我错过的生产力天堂,标签是为平民使用的。

所以我问你,Vim专家:使用缓冲区比使用制表符有什么优点?我看不出两者之间的差别有多大,但我认为自己在操作Vim方面只是处于初级-中级水平。:ls:b#真的比get around快那么多吗?我觉得事情肯定不止于此。


当前回答

我在我的工作流程中使用标签,Ctrl-P和Vim会话,现在已经有一年多了:

我有)和(分别映射到“转到下一个标签”和“转到上一个标签”。Tn打开一个新标签。我还使用tabm来帮助保持内容的组织性。 我使用Vim会话来处理与我正在处理的当前故事/错误相关的文件组,通常按类别进行。在处理过程中,这些会话将被覆盖。 我还没有找到比Ctrl-P更好的方法,但它确实需要处理所有文件才能找到。

其他回答

把这些添加到你的.vimrc中,开始爱上缓冲区吧:

:nnoremap <Tab> :n<cr>
:nnoremap <S-Tab> :N<cr>

这样你就可以通过Tab/ShiftTab在正常模式下向前/向后循环。

另一个技巧是,当使用缓冲区名称作为:buffer的参数时,不必指定整个名称。但是,如果有多个缓冲区与给定参数匹配,则缓冲区不会切换。

可以使用缓冲区名称的任何片段进行匹配。例如,如果你有request_manager.java和queue_manager.java两个缓冲区,那么:buffer que或:b que会匹配它们,但会切换到queue_manager.java,因为它在开始时匹配。

我想推荐一个多年前的出色实现:kien/tabman.vim。它澄清了以下内容:

One can have as many buffers that are carefully hidden, somewhere; By design, tabs are meant to display bufferes in creative ways. With some proper tabline plugin, one can display all the hidden buffers at the top row (tabline); Per my experience with vim-airline, the tabline will show very few relevant information when I create a new tab. Two tags will occupy the tabline slot, side by side, wasting the rest of the horizontal spaces Worst still, I no longer have any idea of what are the buffers that are hidden.

这是对这个神奇插件的一次奇妙的重新发现,它也应该在我的Vim配置中存在很多年了。 当我继续寻找一些东西,也显示所有隐藏的缓冲区,TabMan是我的超人,当它有一个鸟瞰缓冲区如何安排在不同的选项卡。

我曾经把每个缓冲区都放在一个单独的标签中,但我厌倦了不断的gt和到处闲逛。

我还觉得缓冲区太难管理了。

下面这些技巧完全改变了我之前的看法:

缓冲区管理::b。你会出奇的快。参见vim,使用普通vim在文件之间快速切换(没有插件) 跳转/更改列表(ctrl o/i和g;) 替代文件(^) tpope的un受损插件。方便的映射,用于在缓冲区中飞行(以及其他)。

以下是我的典型工作流程:

打开Vim,使用:e(通常带有一个正则表达式,如:e src/**/F*Bar.js)来打开一个缓冲区 我意识到我需要打开另一个文件。也可以用e表示。如果我想在这个缓冲区和当前打开的缓冲区之间切换,我将使用:sp或:vsp在一个单独的窗口中打开它。 重复这个过程,直到我有3-5个文件,我将使用上面项目列表中的技巧在你的缓冲区之间切换。 如果我想“重新开始”我的缓冲区,只是关闭Vim并重新打开。

我觉得在强迫使用这些新模式一周左右之后,我更容易想象我打开了哪些缓冲区,以及如何在短短几次自动笔划中到达其中任何一个缓冲区。

制表符和缓冲区是Vi中两个不同的标准。 阅读以下三个定义:

A buffer is the in-memory text of a file
A window is a viewport on a buffer.
A tab page is a collection of windows.

阅读这篇文章了解更多https://joshldavis.com/2014/04/05/vim-tab-madness-buffers-vs-tabs/