【问题标题】:How do I close all windows only in the current tab of vim如何仅在 vim 的当前选项卡中关闭所有窗口
【发布时间】:2013-09-28 12:28:57
【问题描述】:

我知道:qa 会关闭所有缓冲区和窗口并退出vim。很明显,我可以使用:q 退出给定选项卡中的单个窗口/拆分。但是考虑一下我在当前选项卡中有三个窗口以及一堆相邻打开的选项卡的情况。我想关闭当前选项卡中的三个窗口,但不退出 vim 或其他相邻选项卡。

我该怎么做?我浏览了 vim 帮助文件,但似乎没有直接的选项。我想使用 vimscript 可以获得这样的功能是可能的,但我想在得出结论之前确定它是唯一的选择。

如果 vim 不直接支持它并且有人已经足够出色地为其编写插件,我很想知道它。

【问题讨论】:

  • 在 Vim 术语中,“拆分”=“窗口”。关闭“当前窗口中的所有拆分”是什么意思?你说的是标签页吗?
  • @glts 是的,发布后我很快意识到我搞砸了术语。现在修复它。感谢您指出。

标签: vim


【解决方案1】:

您的意思是要关闭当前标签页吗?然后是 :tabclose 命令。

【讨论】:

  • 我大约在您回答问题的同时发现了它。不过还是谢谢。
  • 如何关闭最后一个标签页?
  • @HieuM.Nguyen 目前,您必须知道标签号并将其指定给:tabclose。有一个proposed patch 来增强对一些相关命令(:close:argadd:argdelete)的{count} 参数的处理。可能想要求作者将相对偏移处理包括到:tabclose,以便:$tabclose 起作用。
  • 谢谢jamessan。我的目的是绑定关闭标签页的快捷方式。我写了一个自动命令,在 :tabclose:q 之间交替取决于当前选项卡的数量:au TabEnter * let g:tabcount = tabpagenr('$') | if tabcount == 1 | nnoremap <leader>c :q<CR> | else | nnoremap <leader>c :tabclose<CR> |endif
  • @HieuM.Nguyen 使用<expr> 映射可能更简单。 nnoremap &lt;expr&gt; &lt;leader&gt;c tabpagenr('$') &gt; 1 ? ':tabclose&lt;CR&gt;' : ':q&lt;CR&gt;' 似乎是一种更简单的方式来做你想做的事。
【解决方案2】:

我还发现这个命令有效。 help tabpage 的帮助页面非常有用。

:tabc

就像@glts 在评论中指出的那样,我需要先整理好我的 vim 术语,然后才能找到答案。

【讨论】:

    【解决方案3】:

    建议:tabc[lose] 的现有答案是正确的。但是,在某些情况下,另一个答案可能有用。

    如果您想关闭当前选项卡中的窗口以减少在打开新选项卡并将一些新文件拉入其中之前打开的内容的数量,tabclose 选项仍然有效;简而言之,你会做:tabc|tabe。但是,我的 Vim 纯粹主义者不禁指出,您可以通过键入 :on|ene:only | enew 的缩写)来节省您自己的三个击键次数,或者“在当前选项卡中关闭除此窗口之外的所有窗口;现在,在此窗口中打开一个新的未命名文件。”如果想用命名文件替换当前窗口,这个习惯用法比另一个短两次击键,总共五个::on|e foo.txt:tabc|tabe foo.txt

    因此,虽然问题的正确答案通常是:tabclose 命令,但在某些情况下:on|e:on|ene 更有用。

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 2021-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 2018-01-12
      相关资源
      最近更新 更多