如何在Vim中closures一个缓冲区(多个)?

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

vim a/*.php 

打开了23个文件。

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

 :q 

closures所有我的缓冲区。

如何closuresVim中的一个缓冲区?

谨慎的一句话:“w不代表写作,而是为了消灭!”

更多来自手册:

:BD

卸载缓冲区[N](默认:当前缓冲区)并将其从缓冲区列表中删除。 如果更改了缓冲区,则除非指定了[!],否则会失败。 该文件保持不受影响。

如果你知道你在做什么,你也可以使用:bw

:BW

像|:bdelete |,但真正删除缓冲区。

如果以前的答案没有显而易见:

:bd将closures当前的缓冲区。 如果你不想抓取缓冲区列表。

使用:buffers检查你的缓冲区ID

你会看到像这样的缓冲区列表

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

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

 :2bw 

如果你想删除/closures所有的缓冲区

 :1,3bw 

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

例如,在我打开了几个.txt文件来刷新我对某些细节的记忆之后,复制并粘贴几行文本作为sorting模板使用..等等。我会input以下内容:

 :bd txt <Tab> 

请注意,匹配的string不一定要在文件名的开头。

以上显示了与屏幕底部的“txt”相匹配的文件名列表,并保留了我最初input的:bd命令,可以随时完成。

这是一个例子:

 doc1.txt doc2.txt :bd txt 

我可以退回到'txt'位,然后input我想要删除的文件名,但是在这里变得非常方便的是,我不需要:如果我再次点击Tab键,Vim会自动完成我的命令与第一场比赛:

 :bd doc1.txt 

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

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

当然,这种方法也可以用来通过如下命令切换到给定的缓冲区:b ..:sb ..等

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

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

 :help wildmode 

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

 :set wildmode=list:longest,full 

与使用缓冲区号不同的是,这种方法的优点是我通常记得给定文件名的至less一部分,让我直接定位缓冲区,而不必先通过:ls命令查找它的编号。

使用:

  • :ls – 列出缓冲区
  • :bd#n – closures缓冲区,其中#n是缓冲区号(使用ls来获取)

例子:

  • 删除缓冲区2:

     :bd2 

您也可以将下一个和上一个映射到function键,使缓冲循环变得轻而易举

 map <F2> :bprevious<CR> map <F3> :bnext<CR> 

从我的vimrc

怎么样

 vim -O aa 

这样,您可以编辑左侧的单个文件,并浏览右侧的整个目录…只是一个想法,而不是解决scheme…

[编辑:这是一个愚蠢的build议,从我不知道Vim好。 请不要使用制表符而不是缓冲区; 标签是Vim的“窗口布局”]

也许切换到使用标签?

vim -pa/*.php在标签中打开相同的文件

gtgT来回切换标签

:q只closures当前标签

:qaclosures所有内容并退出

:taboclosures一切,但当前标签

那些使用缓冲区或树导航插件,如缓冲区或NERDTree,将需要切换这些分裂之前销毁当前的缓冲区 – 否则你会发送你的分裂到wonkyville

我用:

 "" Buffer Navigation " Toggle left sidebar: NERDTree and BufferGator fu! UiToggle() let b = bufnr("%") execute "NERDTreeToggle | BuffergatorToggle" execute ( bufwinnr(b) . "wincmd w" ) execute ":set number!" endf map <silent> <Leader>w <esc>:call UiToggle()<cr> 

那个列表中的“ NERDTreeToggle ”与键入:NERDTreeToggle相同。 您可以修改此function以与您自己的configuration集成。