例如,我在Vim中通过运行打开几个文件
vim a/*.php
打开23个文件。
然后我进行编辑并运行以下两次
:q
这就关闭了所有的缓冲区。
如何在Vim中只关闭一个缓冲区?
例如,我在Vim中通过运行打开几个文件
vim a/*.php
打开23个文件。
然后我进行编辑并运行以下两次
:q
这就关闭了所有的缓冲区。
如何在Vim中只关闭一个缓冲区?
当前回答
与其浏览:ls命令的输出并通过指定缓冲区的编号来删除(unload, wipe..)缓冲区,我发现使用文件名通常更有效。
例如,在我打开了几个.txt文件后,我的一些精细点的记忆。复制并粘贴几行文本作为模板。等。我将输入以下内容:
:bd txt <Tab>
注意,匹配的字符串不必位于文件名的开头。
上面显示了屏幕底部匹配“txt”的文件名列表,并保持我最初输入的:bd命令不变,准备完成。
这里有一个例子:
doc1.txt doc2.txt
:bd txt
我可以退格在“txt”位,并输入我想删除的文件名,但这变得非常方便,因为我不必这样做:如果我第二次按Tab键,Vim会自动完成我的命令与第一个匹配:
:bd doc1.txt
如果我想去掉这个缓冲区,我只需要按回车键。
如果我要删除的缓冲区恰好是第二个(第三..等)匹配,我只需要继续按Tab键,使我的:bd命令循环通过匹配列表。
当然,这个方法也可以通过以下命令切换到给定的缓冲区:b..:某人. .等。
当设置了“hidden”Vim选项时,这种方法特别有用,因为缓冲区列表可能很快变得相当大,覆盖了几个屏幕,并且很难找到我正在寻找的特定缓冲区。
为了充分利用这个特性,最好阅读下面的Vim帮助文件,并相应地调整Tab命令行补全的行为,使其最适合您的工作流程:
:help wildmode
我上面描述的行为是由以下设置产生的,为了保持一致性,为了模拟bash完成,我选择了以下设置:
:set wildmode=list:longest,full
与使用缓冲区编号相反,这种方法的优点是,我通常至少记得给定文件名的一部分,这让我可以直接定位缓冲区,而不必首先通过:ls命令查找它的编号。
其他回答
您还可以将next和previous映射到功能键,从而使在缓冲区中的循环变得轻而易举
map <F2> :bprevious<CR>
map <F3> :bnext<CR>
从我的vimrc
检查缓冲区id使用 :缓冲区
你会看到一个缓冲区列表
1 a.php
2 b.php
3 c.php
如果你想从buffer中删除b.php
:2bw
如果你想从缓冲区中删除/关闭所有
:1,3bw
那些使用缓冲区或树导航插件,如Buffergator或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相同。您可以修改此功能以与您自己的配置集成。
与其浏览:ls命令的输出并通过指定缓冲区的编号来删除(unload, wipe..)缓冲区,我发现使用文件名通常更有效。
例如,在我打开了几个.txt文件后,我的一些精细点的记忆。复制并粘贴几行文本作为模板。等。我将输入以下内容:
:bd txt <Tab>
注意,匹配的字符串不必位于文件名的开头。
上面显示了屏幕底部匹配“txt”的文件名列表,并保持我最初输入的:bd命令不变,准备完成。
这里有一个例子:
doc1.txt doc2.txt
:bd txt
我可以退格在“txt”位,并输入我想删除的文件名,但这变得非常方便,因为我不必这样做:如果我第二次按Tab键,Vim会自动完成我的命令与第一个匹配:
:bd doc1.txt
如果我想去掉这个缓冲区,我只需要按回车键。
如果我要删除的缓冲区恰好是第二个(第三..等)匹配,我只需要继续按Tab键,使我的:bd命令循环通过匹配列表。
当然,这个方法也可以通过以下命令切换到给定的缓冲区:b..:某人. .等。
当设置了“hidden”Vim选项时,这种方法特别有用,因为缓冲区列表可能很快变得相当大,覆盖了几个屏幕,并且很难找到我正在寻找的特定缓冲区。
为了充分利用这个特性,最好阅读下面的Vim帮助文件,并相应地调整Tab命令行补全的行为,使其最适合您的工作流程:
:help wildmode
我上面描述的行为是由以下设置产生的,为了保持一致性,为了模拟bash完成,我选择了以下设置:
:set wildmode=list:longest,full
与使用缓冲区编号相反,这种方法的优点是,我通常至少记得给定文件名的一部分,这让我可以直接定位缓冲区,而不必首先通过:ls命令查找它的编号。
如果前面的答案没有说明这一点:
:bd将关闭当前缓冲区。如果你不想获取缓冲列表。