如果我有 2 个水平/垂直拆分的缓冲区并想要关闭其中一个,但我不想关闭窗口。我想保持拆分窗口的位置与关闭缓冲区之前相同。
如果我按 :bd ,关闭缓冲区的窗口也会关闭。
最佳答案
像@RusAlex 我不喜欢插件。我也想知道我输入的代码实际上是做什么的。nmap ,d :b#<bar>bd#<CR>
总之这将键映射添加到 vim 的正常模式等待键序列 ,d
.执行时,这将切换到先前打开的缓冲区并尝试删除您切换的缓冲区。
删除屏幕外缓冲区可保持屏幕按原样分割。
该命令由三个空格分隔的部分组成:
nmap
- 添加/更改模式正常的键映射,d
- react 的关键序列;第一个 ,
(逗号),然后是 d
:b#<bar>bd#<CR>
- 要执行的键序列要执行的命令由五部分组成:
:
- 将 vim 切换到命令行模式 b#
- 将窗口切换到先前打开的缓冲区 <bar>
- 期待后续命令;代表|
(管道字符);用于链接命令 bd#
- 删除之前打开的缓冲区,即刚刚从 <CR>
- 执行命令;代表回车,基本上是键Return
或 Enter
该命令采用配置文件中使用的格式,如
~/.vimrc
.如果要从 vim 中添加映射,请在前面添加 :
(冒号) - 退出 vim 时映射将丢失::nmap ,d :b#<bar>bd#<CR>
当您打开 vim 时,它通常处于正常模式,而不是模式插入(按
-- INSERT --
后在屏幕底部由 i
指示),视觉等。 n
在 nmap
指定仅添加到正常模式的键映射。查找更多关于映射 here重要提示:
b#
如果它是唯一已知的缓冲区,将切换到当前缓冲区。 b#
可以切换到隐藏/关闭的缓冲区,例如您刚刚通过按 ,d
关闭的那个. bd#
如果它是唯一已知的不分割屏幕的缓冲区,则将关闭当前缓冲区,从而为您留下一个空缓冲区。 bd#
如果切换出的缓冲区是隐藏/关闭的缓冲区,则会失败。 bd#
如果在切换另一个窗口后显示要关闭的缓冲区,仍将不拆分。 补充笔记:
:windo b#
将所有窗口切换到先前打开的缓冲区。不确定如何与 bd
结合使用. <CR>
可以省略,在这种情况下您必须手动按 Return
或 Enter
执行。 :nmap ,
显示所有以 ,
开头的普通模式映射. :ls
列出打开的缓冲区。 关于Vim 关闭缓冲区但不拆分窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298910/