如何关闭Vim中的单个缓冲区(多个)?

十年热恋 提交于 2020-02-27 11:43:37

我在Vim中打开了几个文件,例如,运行

vim a/*.php

打开23个文件。

然后我进行编辑并运行以下两次

:q

它关闭了我所有的缓冲区。

如何在Vim中只关闭一个缓冲区?


#1楼

而不是浏览:ls命令的输出并通过指定其编号来删除(卸载,擦除..)缓冲区,我发现使用文件名通常更有效。

例如,在我打开几个.txt文件以刷新我的一些精细点的记忆之后..复制并粘贴几行文本以用作各种类型的模板......等等我输入以下内容:

:bd txt <Tab>

请注意,匹配的字符串不必位于文件名的开头。

上面显示了与屏幕底部的“txt”匹配的文件名列表,并保持我最初输入的:bd命令不变,准备完成。

这是一个例子:

doc1.txt doc2.txt
:bd txt 

我可以在'txt'位上退格并键入我想要删除的文件名,但这变得非常方便的是我不必:如果我第二次点击Tab键,Vim会自动完成我的命令第一场比赛:

:bd doc1.txt

如果我想摆脱这个特定的缓冲区,我只需要按Enter键。

如果我想要删除的缓冲区恰好是第二个(第三个......等)匹配,我只需要继续按Tab键使my:bd命令在匹配列表中循环。

当然,此方法也可用于通过以下命令切换到给定缓冲区:b ..:sb ..等。

当设置'隐藏'Vim选项时,这种方法特别有用,因为缓冲区列表可能很快变得非常大,覆盖几个屏幕,并且很难找到我正在寻找的特定缓冲区。

要充分利用此功能,最好阅读以下Vim帮助文件并相应地调整Tab命令行完成的行为,以便最适合您的工作流程:

:help wildmode

我上面描述的行为来自以下设置,为了模仿bash完成,我为了一致性而选择了这个设置:

:set wildmode=list:longest,full

与使用缓冲区编号相反,这种方法的优点在于我通常至少记住给定文件名的一部分,让我直接定位缓冲区,而不必通过:ls命令首先查找其编号。


#2楼

怎么样

vim -O a a

这样你就可以编辑左边的单个文件并导航右边的整个目录......只是一个想法,而不是解决方案......


#3楼

使用:buffers检查缓冲区ID

你会看到那里的缓冲区列表

1  a.php
2  b.php
3  c.php

如果你想从缓冲区中删除b.php

:2bw

如果要从缓冲区中删除/关闭所有内容

:1,3bw

#4楼

使用:

  • :ls - 列出缓冲区
  • :bd#n #n - 关闭缓冲区,其中#n是缓冲区编号(使用ls来获取它)

例子:

  • 删除缓冲区2:

    :bd2

#5楼

如果以前的答案没有明显这一点:

:bd将关闭当前缓冲区。 如果您不想获取缓冲区列表。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!