例如,我在Vim中通过运行打开几个文件
vim a/*.php
打开23个文件。
然后我进行编辑并运行以下两次
:q
这就关闭了所有的缓冲区。
如何在Vim中只关闭一个缓冲区?
例如,我在Vim中通过运行打开几个文件
vim a/*.php
打开23个文件。
然后我进行编辑并运行以下两次
:q
这就关闭了所有的缓冲区。
如何在Vim中只关闭一个缓冲区?
当前回答
在不关闭窗口的情况下关闭缓冲区
如果你想关闭一个缓冲区而不破坏你的窗口布局(基于分割的当前布局),你可以使用像bbye这样的插件。基于这个,你可以用
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
或者只是在.vimrc中创建一个映射,以便于访问
:nnoremap <Leader>q :Bdelete<CR>
优于vim的:bdelete和:bwipeout
从插件的文档:
关闭并删除缓冲区。 在该窗口中显示另一个文件。 如果没有打开其他文件,则显示空文件。 如果您决定在该窗口中编辑另一个文件,不要留下无用的[无文件]缓冲区。 即使文件在多个窗口中打开也可以工作。 可以使用各种缓冲浏览器和选项卡。
:bdelete vs:bwipeout
从插件的文档:
Vim有两个命令用来关闭缓冲区::bdelete和:bwipeout。前者从缓冲区列表中删除文件,清除其选项、变量和映射。但是,它仍然在跳转列表中,所以Ctrl-o将您带回去并重新打开文件。如果这不是你想要的,使用:bwipeout或Bbye的等效:bwipeout,而你本可以使用:bdelete。
其他回答
检查缓冲区id使用 :缓冲区
你会看到一个缓冲区列表
1 a.php
2 b.php
3 c.php
如果你想从buffer中删除b.php
:2bw
如果你想从缓冲区中删除/关闭所有
:1,3bw
您还可以将next和previous映射到功能键,从而使在缓冲区中的循环变得轻而易举
map <F2> :bprevious<CR>
map <F3> :bnext<CR>
从我的vimrc
在不关闭窗口的情况下关闭缓冲区
如果你想关闭一个缓冲区而不破坏你的窗口布局(基于分割的当前布局),你可以使用像bbye这样的插件。基于这个,你可以用
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
或者只是在.vimrc中创建一个映射,以便于访问
:nnoremap <Leader>q :Bdelete<CR>
优于vim的:bdelete和:bwipeout
从插件的文档:
关闭并删除缓冲区。 在该窗口中显示另一个文件。 如果没有打开其他文件,则显示空文件。 如果您决定在该窗口中编辑另一个文件,不要留下无用的[无文件]缓冲区。 即使文件在多个窗口中打开也可以工作。 可以使用各种缓冲浏览器和选项卡。
:bdelete vs:bwipeout
从插件的文档:
Vim有两个命令用来关闭缓冲区::bdelete和:bwipeout。前者从缓冲区列表中删除文件,清除其选项、变量和映射。但是,它仍然在跳转列表中,所以Ctrl-o将您带回去并重新打开文件。如果这不是你想要的,使用:bwipeout或Bbye的等效:bwipeout,而你本可以使用:bdelete。
如果前面的答案没有说明这一点:
:bd将关闭当前缓冲区。如果你不想获取缓冲列表。
[编辑:这是一个愚蠢的建议,因为当时我还不太了解Vim。请不要使用制表符代替缓冲区;标签是Vim的“窗口布局”]
也许改用标签?
Vim -p a/*.php在选项卡中打开相同的文件
gt和gt来回切换标签
:q只关闭当前选项卡
:qa关闭所有内容并退出
:tabo关闭除当前标签外的所有内容