2010-02-10 90 views
15

我一直认为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内做到这一点?

回答

6

您不能在同一会话中重新分配缓冲区号。你最好的选择是环顾vimscript的替代品。

一个,处理分拣到最近使用的文件(可以删除缓存)缓冲区探险家是Buffer Explorer/Browser

有迎合他们的不同作者的需求上vim.org其他缓冲切换脚本的负载。或者你也可以用自己的映射推出自己的产品。

我想出了这个Django的。

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

它给了我快两/三按键进入相对20个标准命名的文件到一个应用程序目录。你可以在这些方面为你的项目想出一些东西。

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

我也被映射为\vr的〜/ .vimrc\br〜/ .bashrc中

最重要的事情是可以而且应该是一个非常有效的方法。

+0

你的\ 1,\ 2,\ 3绘图脚本指向我正在寻找的答案,如果我没有看到更好的东西,我会接受它。如果这种方法被系统地扩展为以所需的顺序为缓冲区中的所有文件创建映射,那么这对于通过缓冲区号切换到任何文件是一个可接受的选择,特别是如果与列出文件的脚本一起使用在相同的映射数字序列中。 – 2010-02-11 18:13:04

1

我推荐使用的标签,而不是(从VIM 7)。你可以用tabm自由移动它们并用tabetabnew打开新的。另外,更明显的是发生了什么。您也可以使用-p(IIRC)打开一堆选项卡来启动vim。

+1

感谢您的建议,但我更喜欢缓冲区数量超过选项卡的原因之一是我经常一次处理数十或数百个文件。在给定的会话中,我开始通过缓冲区号记住经常使用的文件,并快速在它们之间来回切换。这看起来不像标签那么容易。 我怀疑这也是为什么vim试图维持缓冲区号码的持久性,但是如果我不得不重新加载一块缓冲区(比如包含文件),我喜欢让它们保持在顶部。这是我想解决的问题。 – 2010-02-10 21:43:12

2

这里有一个偷懒的方法做(并不需要学习新的东西):无论你喜欢的工作

  • 您的会话保存到当前工作目录或 文件:
:mksession Session.vim 
  • 编辑Session.vim。查找打开的缓冲区列表(以badd开头的行)。

  • 重新排列您喜欢的线条。

  • 关闭vim。使用-S标志和会议文件

  • 启动VIM:

$> gvim -S Session.vim 

您的缓冲区将依次在你把它们的顺序重新编号。