如何在GVIM中显示选项卡关闭按钮?

12
请告诉我如何在 GVIM 的每个标签页上显示关闭按钮。
另外,如果我在多个标签页打开的情况下关闭 GVIM,是否可以设置警告?
3个回答

71

简短回答

有效地使用缓冲区!

详细回答

你可以考虑使用:tabclose关闭标签页。这样做的好处是关闭标签页(让你不再需要鼠标),同时也足够让你产生改变工作流程的动力,转而使用缓冲区和分屏。如果要警告关闭具有多个窗口的标签页,在我看来没有什么好处,因为如果你设置了'hidden',那么缓冲区仍然存在,所以没有任何损害。如果你没有设置'hidden',则在关闭之前会提示修改过的缓冲区。

为什么不使用标签页

标签页很棒。然而,vim将标签页视为更多的视口,用于查看一组窗口或工作区。标签页并不适合大规模使用。只需打开其他GUI编辑器并打开20个或更多的标签页,就会变得棘手。我曾经打开过100多个缓冲区,并在它们之间切换而不必担心。缓冲区比标签页更具可扩展性。当使用终端时,缓冲区和分屏也可以很好地适应较小的窗口。

不要只听取我的意见。以下是一些支持信息:

快速缓冲区技巧和技巧

  • set hidden 命令会在放弃缓冲区时隐藏它们。
  • 使用 :sb 切换到已经打开的缓冲区。
  • :sb:b 命令都可以使用部分名称和通配符。例如: :sb foo*
  • 查看 'switchbuf' 并根据个人偏好进行更改。
  • 学会喜欢上 :sp, :new 和所有类型的分割命令。
  • 学习一些 <c-w> 命令,使您在分割时更加容易。
  • 使用大写字母标记跳回您知道将要跳回的缓冲区。
  • 使用标签跳转到定义处。
  • 可能需要与标签一起使用 cscope
  • 使用 <c-6> 切换到先前编辑过的文件。
  • 使用 <c-o><c-i> 在跳转列表中移动到旧的/新的位置。
  • 可能需要使用众多缓冲区插件之一。例如:CtrlP

了解更多信息,请参见:

:h :sb
:h windows
:h 'hidden'
:h 'swb'
:h ctrl-6
:h ctrl-o
:h tags
:h cscope
:h tab-page-commands

不是直接的答案,但是一个有效的论点和非常好的链接选择! - Ingo Karkat
有点跑题,但这是我听过的最好的使用缓冲区导航打开文件的案例 - 读完这篇之后,我会尝试使用缓冲区! - the_velour_fog
使用大写字母标记跳回到你知道会跳回的缓冲区。哇,这就是我生活中所缺少的。 - Mateen Ulhaq
fzf.vim 用于通过模糊名称输入切换缓冲区和打开文件。 - Ejaz

8

显示关闭按钮

'tabline' 选项可以使用 %X 标记来显示关闭标签页的按钮,但这只适用于控制台版本的标签栏。 :help 'guitablabel' 明确说明:

请注意,该选项不使用语法高亮。 %T 和 %X 项也会被忽略。

因此,为了按字面意思获取你想要的内容,你需要切换到(更丑陋的)基于文本的标签行:

:set guioptions-=e

但需要注意,在Vim中使用鼠标(即使您可能已经习惯了其他应用程序,如Web浏览器选项卡)是不被鼓励的。如果你在GUI选项卡标签上右键单击,你也可以从弹出菜单中选择“关闭选项卡”。

防止选项卡关闭

(请注意,此处不建议提出多个问题,请分开提问。)

我认为这是不可能的;虽然有一个VimLeavePre事件可以挂钩,但它无法阻止Vim关闭;操作(例如:qall!)无法撤消。如果你习惯于通过映射或命令关闭Vim,你可以覆盖它并在其中包含一个检查(使用tabpagenr('$') > 1)。

如果您关心失去窗口/选项卡布局,最好看看Vim会话(可以自动在后台保留)。这将允许重新启动Vim,并打开之前打开的窗口。


有没有办法钩入vim基本命令,比如tabclet?即用自己的版本替换它们,可能会调用原始版本。 - majkinetor
@majkinetor 通常不会这样做;常见的解决方法是定义自定义的大写变体,并通过cmdalias.vim插件覆盖原始(小写)内置命令。 - Ingo Karkat
那不是解决方法。它完全不同。 :) 我认为很遗憾这样的东西不存在。 - majkinetor

0
如果你需要这个,那么你可能做错了。在vim中,你不需要鼠标。
但是,还有什么其他的呢?
nnoremap <MiddleMouse> :tabclose<CR> 

除此之外,请参见TabLineSet.vim:Vim7选项卡定制,其中包括

closers:为选项卡添加热点(“!”)以进行单击关闭


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接