Vim 关闭缓冲区但不拆分窗口

标签 vim buffer

如果我有 2 个水平/垂直拆分的缓冲区并想要关闭其中一个,但我不想关闭窗口。我想保持拆分窗口的位置与关闭缓冲区之前相同。

如果我按 :bd ,关闭缓冲区的窗口也会关闭。

最佳答案

像@RusAlex 我不喜欢插件。我也想知道我输入的代码实际上是做什么的。
nmap ,d :b#<bar>bd#<CR>
总之这将键映射添加到 vim 的正常模式等待键序列 ,d .执行时,这将切换到先前打开的缓冲区并尝试删除您切换的缓冲区。

删除屏幕外缓冲区可保持屏幕按原样分割。

该命令由三个空格分隔的部分组成:

  • nmap - 添加/更改模式正常的键映射
  • ,d - react 的关键序列;第一个 , (逗号),然后是 d
  • :b#<bar>bd#<CR> - 要执行的键序列

  • 要执行的命令由五部分组成:
  • : - 将 vim 切换到命令行模式
  • b# - 将窗口切换到先前打开的缓冲区
  • <bar> - 期待后续命令;代表| (管道字符);用于链接命令
  • bd# - 删除之前打开的缓冲区,即刚刚从
  • 切换的缓冲区
  • <CR> - 执行命令;代表回车,基本上是键ReturnEnter

  • 该命令采用配置文件中使用的格式,如 ~/.vimrc .如果要从 vim 中添加映射,请在前面添加 : (冒号) - 退出 vim 时映射将丢失:
    :nmap ,d :b#<bar>bd#<CR>
    当您打开 vim 时,它通常处于正常模式,而不是模式插入(按 -- INSERT -- 后在屏幕底部由 i 指示),视觉等。 nnmap指定仅添加到正常模式的键映射。查找更多关于映射 here

    重要提示:
  • b#如果它是唯一已知的缓冲区,将切换到当前缓冲区。
  • b#可以切换到隐藏/关闭的缓冲区,例如您刚刚通过按 ,d 关闭的那个.
  • bd#如果它是唯一已知的不分割屏幕的缓冲区,则将关闭当前缓冲区,从而为您留下一个空缓冲区。
  • bd#如果切换出的缓冲区是隐藏/关闭的缓冲区,则会失败。
  • bd#如果在切换另一个窗口后显示要关闭的缓冲区,仍将不拆分。

  • 补充笔记:
  • :windo b#将所有窗口切换到先前打开的缓冲区。不确定如何与 bd 结合使用.
  • <CR>可以省略,在这种情况下您必须手动按 ReturnEnter执行。
  • :nmap ,显示所有以 , 开头的普通模式映射.
  • :ls列出打开的缓冲区。
  • 关于Vim 关闭缓冲区但不拆分窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298910/

    相关文章:

    Vim 命令 :Explore :Sexplore :Hexplore doesn't work in cygwin

    vim - 在 Vim 中,防止插件在特定窗口中打开文件

    Python:sys.stdout.flush() 与 sys.stdout.buffer.flush()?

    C - 如何在没有缓冲的情况下轮询()输入?

    vim - 如何将可视范围传递给没有数字或使用 :command in vim? 的函数

    c - 在具有大型 C 文件的 vim 中启用语法和语法折叠会使完成变慢

    VIM ctrlp.vim插件: how to rescan files?

    jsp - Java EE中的JspWriter和PrintWriter之间的区别?

    javascript - HTML5 视频 - 文件加载完成事件?

    opengl - 为什么 openGL glDepthFunc() 不起作用?