我通过运行以下命令在Vim中打开了几个文件:
vim a/*.php
打开23个文件。
然后,我进行编辑并运行以下两次
:q
这将关闭我所有的缓冲区。
如何在Vim中仅关闭一个缓冲区?
我通过运行以下命令在Vim中打开了几个文件:
vim a/*.php
打开23个文件。
然后,我进行编辑并运行以下两次
:q
这将关闭我所有的缓冲区。
如何在Vim中仅关闭一个缓冲区?
Answers:
请注意:“ bw中的w并不代表写,而是代表消失!”
手册中的更多内容:
:bd
卸载缓冲区[N](默认值:当前缓冲区)并将其从缓冲区列表中删除。如果更改了缓冲区,则失败,除非指定了[!],否则更改将丢失。该文件不受影响。
如果您知道自己在做什么,也可以使用:bw
:体重
与|:bdelete |类似,但实际上是删除缓冲区。
:bw
在“您知道自己在做什么”时使用,而我不知道,所以我猜我会使用:bd
。
:bd
)也会关闭该选项卡。您可能想要的是:bd n .. [m]
或:n,mbd
要关闭特定数字或特定数字范围,而无需查看缓冲区即可完成
w
write
根据Vim手册,它是命令的缩写,此外,也没有提及任何“清除”。命令(help write
)的描述以“将整个缓冲区写入当前文件”开头。
w
是bw
命令中的意味着他并不是在谈论w
命令。他在此处发出此警告,使人们不认为该bw
命令意味着缓冲区写入(这并不意味着缓冲区擦除)。–
如果前面的答案没有使这变得显而易见:
:bd将关闭当前缓冲区。如果您不想获取缓冲区列表。
:bd
只关闭缓冲区(而这意味着),而:bw
同时也将清除所有变量,并从ls
缓冲区中真正消除它。
使用: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键,即可使我的:bd命令在匹配项列表中循环。
当然,此方法也可以用于通过:b ..:sb ..等命令切换到给定的缓冲区。
当设置了'hidden'Vim选项时,这种方法特别有用,因为缓冲区列表会很快变大,覆盖多个屏幕,并且很难发现我要查找的特定缓冲区。
要充分利用此功能,最好阅读以下Vim帮助文件,并相应地调整Tab命令行完成的行为,以使其最适合您的工作流程:
:help wildmode
我上面描述的行为来自以下设置,出于一致性考虑,我选择了此设置以模拟bash的完成:
:set wildmode=list:longest,full
与使用缓冲区编号相反,此方法的优点是我通常记得给定文件名的至少一部分,使我可以直接定位缓冲区,而不必首先通过:ls命令查找其编号。
[编辑:这是从我不太了解Vim以来的愚蠢建议。请不要使用制表符代替缓冲区;标签是Vim的“窗口布局”]
也许切换到使用标签页?
vim -p a/*.php
在标签中打开相同的文件
gt
和gT
开关选项卡来回
:q
仅关闭当前标签
:qa
关闭所有内容并退出
:tabo
关闭除当前选项卡之外的所有内容
wildmenu
?它类似于lustyjuggler(虽然更简单),但是它是内置的(这对我很有用,因为lustyjuggler需要+ruby
,并且是Ubuntu 惯性船的默认vim -ruby
)。
vim-nox
来自Ubuntu 的软件包具有Ruby支持。
使用缓冲区或树状导航插件(例如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
。您可以修改此功能以与您自己的配置集成。
如果要关闭缓冲区而不破坏窗口布局(基于拆分的当前布局),则可以使用bbye之类的插件。基于此,您可以使用
:Bdelete (instead of :bdelete)
:Bwipeout (instead of :bwipeout)
或者只是在您中创建一个映射,.vimrc
以便于访问,例如
:nnoremap <Leader>q :Bdelete<CR>
从插件的文档中:
- 关闭并卸下缓冲区。
- 在该窗口中显示另一个文件。
- 如果您没有其他文件打开,请显示一个空文件。
- 如果您决定在该窗口中编辑另一个文件,请不要使用无用的[no file]缓冲区。
- 即使一个文件在多个窗口中打开也可以工作。
- 可以与各种缓冲区浏览器和标签栏一起正常工作。
从插件的文档中:
Vim有两个关闭缓冲区的命令:
:bdelete
和:bwipeout
。前者从缓冲区列表中删除文件,清除其选项,变量和映射。但是,它仍保留在跳转列表中,因此Ctrl-o
带您返回并重新打开文件。如果那不是您想要的,请在:bwipeout
原本使用的:Bwipeout
地方使用或Bbye的等效物:bdelete
。
vim -o a/*.php
(或-O
使用垂直窗口)在单独的Vim窗口中打开文件,并避免缓冲区导航-这是仅用于少数几个文件的好方法,但是对于23个文件,它们将只有几行/列每。