我在Vim中打开了几个文件,例如,运行
vim a/*.php
打开23个文件 .
然后我进行编辑并运行以下两次
:q
这会关闭我所有的缓冲区 .
How can you close only one buffer in Vim?
A word of caution: "w does not stand for write but for wipeout!"
更多来自手册:
:bd
卸载缓冲区[N](默认值:当前缓冲区)并将其从缓冲区列表中删除 . 如果缓冲区已更改,则会失败,除非指定了[!],否则更改将丢失 . 该文件不受影响 .
If you know what you're doing, you can also use :bw
:bw
喜欢|:bdelete |,但确实删除了缓冲区 .
如果以前的答案没有明显这一点:
:bd 将关闭当前缓冲区 . 如果您不想获取缓冲区列表 .
使用:buffers检查缓冲区ID
你会看到那里的缓冲区列表
1 a.php 2 b.php 3 c.php
如果你想从缓冲区中删除b.php
:2bw
如果要从缓冲区中删除/关闭所有内容
:1,3bw
而不是浏览:ls命令的输出并通过指定其编号来删除(卸载,擦除..)缓冲区,我发现使用文件名通常更有效 .
例如,在我打开几个.txt文件以刷新我的一些精细点的记忆之后..复制并粘贴几行文本以用作各种模板......等等我输入以下内容:
:bd txt <Tab>
请注意,匹配的字符串不必位于文件名的开头 .
上面显示了与屏幕底部的“txt”匹配的文件名列表,并保持我最初输入的:bd命令不变,准备完成 .
这是一个例子:
doc1.txt doc2.txt :bd txt
我可以在'txt'位上退格并键入我想要删除的文件名,但这真的很方便,我不必:如果我第二次点击Tab键,Vim会自动完成我的命令第一场比赛:
:bd doc1.txt
如果我想摆脱这个特定的缓冲区,我只需要按Enter键 .
如果我要删除的缓冲区恰好是第二个(第三个......等)匹配,我只需要继续按Tab键使my:bd命令在匹配列表中循环 .
当然,此方法也可用于通过以下命令切换到给定缓冲区:b ..:sb ..等 .
当设置'隐藏'Vim选项时,这种方法特别有用,因为缓冲区列表可能很快变得非常大,覆盖多个屏幕,并且很难找到我正在寻找的特定缓冲区 .
要充分利用此功能,最好阅读以下Vim帮助文件并相应地调整Tab命令行完成的行为,以便最适合您的工作流程:
:help wildmode
我上面描述的行为来自以下设置,为了模仿bash完成,我为了一致性而选择这个设置:
:set wildmode=list:longest,full
与使用缓冲区编号相反,这种方法的优点是我通常至少记住给定文件名的一部分,让我直接定位缓冲区,而不必通过:ls命令首先查找其编号 .
使用:
:ls - 列出缓冲区
:ls
:bd#n - 关闭缓冲区,其中#n是缓冲区编号(使用 ls 来获取)
:bd#n
ls
例子:
:bd2
您也可以将下一个和上一个映射到功能键,从而轻松地通过缓冲区循环
map <F2> :bprevious<CR> map <F3> :bnext<CR>
来自我的vimrc
怎么样
vim -O a a
这样你就可以编辑左边的一个文件并导航右边的整个目录...只是一个想法,而不是解决方案......
[编辑:这是一个愚蠢的建议,从一个我不太了解Vim的时间 . 请不要使用制表符而不是缓冲区;标签是Vim的“窗口布局”]
也许切换到使用标签?
vim -p a/*.php 在选项卡中打开相同的文件
vim -p a/*.php
gt 和 gT 来回切换标签
gt
gT
:q 仅关闭当前选项卡
:qa 关闭一切并退出
:qa
:tabo 关闭除当前选项卡之外的所有内容
:tabo
那些使用缓冲区或树导航插件的人,比如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 相同 . 您可以修改此功能以与您自己的配置集成 .
NERDTreeToggle
:NERDTreeToggle
9 回答
A word of caution: "w does not stand for write but for wipeout!"
更多来自手册:
:bd
If you know what you're doing, you can also use :bw
:bw
如果以前的答案没有明显这一点:
:bd 将关闭当前缓冲区 . 如果您不想获取缓冲区列表 .
使用:buffers检查缓冲区ID
你会看到那里的缓冲区列表
如果你想从缓冲区中删除b.php
如果要从缓冲区中删除/关闭所有内容
而不是浏览:ls命令的输出并通过指定其编号来删除(卸载,擦除..)缓冲区,我发现使用文件名通常更有效 .
例如,在我打开几个.txt文件以刷新我的一些精细点的记忆之后..复制并粘贴几行文本以用作各种模板......等等我输入以下内容:
请注意,匹配的字符串不必位于文件名的开头 .
上面显示了与屏幕底部的“txt”匹配的文件名列表,并保持我最初输入的:bd命令不变,准备完成 .
这是一个例子:
我可以在'txt'位上退格并键入我想要删除的文件名,但这真的很方便,我不必:如果我第二次点击Tab键,Vim会自动完成我的命令第一场比赛:
如果我想摆脱这个特定的缓冲区,我只需要按Enter键 .
如果我要删除的缓冲区恰好是第二个(第三个......等)匹配,我只需要继续按Tab键使my:bd命令在匹配列表中循环 .
当然,此方法也可用于通过以下命令切换到给定缓冲区:b ..:sb ..等 .
当设置'隐藏'Vim选项时,这种方法特别有用,因为缓冲区列表可能很快变得非常大,覆盖多个屏幕,并且很难找到我正在寻找的特定缓冲区 .
要充分利用此功能,最好阅读以下Vim帮助文件并相应地调整Tab命令行完成的行为,以便最适合您的工作流程:
我上面描述的行为来自以下设置,为了模仿bash完成,我为了一致性而选择这个设置:
与使用缓冲区编号相反,这种方法的优点是我通常至少记住给定文件名的一部分,让我直接定位缓冲区,而不必通过:ls命令首先查找其编号 .
使用:
:ls
- 列出缓冲区:bd#n
- 关闭缓冲区,其中#n是缓冲区编号(使用ls
来获取)例子:
您也可以将下一个和上一个映射到功能键,从而轻松地通过缓冲区循环
来自我的vimrc
怎么样
这样你就可以编辑左边的一个文件并导航右边的整个目录...只是一个想法,而不是解决方案......
[编辑:这是一个愚蠢的建议,从一个我不太了解Vim的时间 . 请不要使用制表符而不是缓冲区;标签是Vim的“窗口布局”]
也许切换到使用标签?
vim -p a/*.php
在选项卡中打开相同的文件gt
和gT
来回切换标签:q
仅关闭当前选项卡:qa
关闭一切并退出:tabo
关闭除当前选项卡之外的所有内容那些使用缓冲区或树导航插件的人,比如Buffergator或NERDTree,需要在销毁当前缓冲区之前切换这些分割 - 否则你将把你的分裂发送到wonkyville
我用:
该列表中的“
NERDTreeToggle
”与键入:NERDTreeToggle
相同 . 您可以修改此功能以与您自己的配置集成 .