如何在VIM中重新分配缓冲区编号?

时间:2010-02-10 17:25:49

标签: vim

我曾经以为vim是强大的,直到我想要清除列表中的缓冲区并将其重用于其他内容。例如,如果我有

1 "f1.h"
2 "f2.h"
3 "f3.h"
4 "f1.cpp"
5 "f2.cpp"
6 "f3.cpp"

我想用其他东西替换f1.h - f3.h,但是在相同的缓冲序列中:

1 "n1.h"
2 "n2.h"
3 "n3.h"
4 "f1.cpp"
5 "f2.cpp"
6 "f3.cpp"

我无法弄明白该怎么做。我可以做“1,3bd”并删除缓冲区1-3,甚至“1,3bw”并将它们擦除,但是没有重新启动vim就看不到重用这些数字的方法。 http://vim.wikia.com/wiki/Vim_buffer_FAQ处的vim缓冲区常见问题似乎证实了这一点。

但是我不想相信vim确实有这个限制,是不是真的没办法从vim中做到这一点?

3 个答案:

答案 0 :(得分:6)

您无法在同一会话中重新分配缓冲区编号。最好的办法是环顾四周的替代品。

一个缓冲区资源管理器处理对最近使用过的文件的排序(并且可以删除缓冲区)是Buffer Explorer / Browser

vim.org上有许多其他缓冲区切换脚本可满足各种作者的需求。或者你可以使用一些映射来自己滚动。

我为Django想出了这个。

http://code.djangoproject.com/wiki/UsingVimWithDjango#Mappings

它让我快速两次/三次击键访问相对于app目录的20个标准命名文件。你可以在这些方面为你的项目想出一些东西。

我的映射是\1\2\3等,因此数字范例仍然存在。

我还为〜/ .vimrc \vr映射了{em}〜/ .bashrc 的\br

重要的是它可以而且应该是一个非常有效的过程。

答案 1 :(得分:3)

这是一种懒惰的方式(不需要学习新东西):

  • 将会话保存到当前工作目录中的文件或 无论你喜欢在哪里工作:
:mksession Session.vim
  • 编辑Session.vim。找到打开的缓冲区列表(以badd开头的行)。

  • 根据您的喜好重新排列。

  • 关闭vim。

  • 使用-S标志和会话文件启动vim:

$> gvim -S Session.vim

您的缓冲区将按照您添加的顺序按顺序重新编号。

答案 2 :(得分:0)

我建议改用标签(来自vim 7)。您可以使用tabm自由移动它们,并使用tabetabnew打开新的-p。此外,更明显的是发生了什么。你也可以使用{{1}}(IIRC)打开一堆标签来启动vim。

相关问题