【问题标题】:How to show tab close button in GVIM?如何在 GVIM 中显示选项卡关闭按钮?
【发布时间】:2014-02-15 09:18:14
【问题描述】:

请告诉我如何在 GVIM 的每个标签页上显示关闭按钮。

另外,如果我在打开多个标签页的情况下关闭 GVIM,是否可以设置警告?

【问题讨论】:

    标签: button vim tabs warnings tabpage


    【解决方案1】:

    简答

    有效地使用缓冲区!

    长答案

    您可以考虑使用:tabclose 来关闭您的标签。这样做的好处是关闭选项卡(并使您远离鼠标),但也很烦人,足以促使工作流程转变为使用缓冲区和拆分。至于关闭带有多个窗口的选项卡的警告,如果您设置了'hidden',那么我看不到什么好处,那么缓冲区仍然存在,所以没有害处。如果你没有'hidden',那么任何修改过的缓冲区都会在关闭之前提示。

    为什么不用标签

    标签页很棒。然而,这一切都归结为 vim 将标签页视为一组窗口或工作区的更多视口。标签页不能很好地扩展。只需打开其他一些 GUI 编辑器并打开 20 个左右的选项卡。处理起来很棘手。我已经打开了 100 多个缓冲区并在它们之间切换而无需担心。缓冲区只是以选项卡没有的方式缩放。缓冲区和拆分也适用于较小的窗口,这在使用终端时很常见。

    不要只相信我的话。以下是更多支持信息:

    快速缓冲提示和技巧

    • set hidden 将在放弃时隐藏缓冲区。
    • 使用:sb 切换到您已经打开的缓冲区。
    • :sb:b 都可以采用部分名称和 glob。例如: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
    

    【讨论】:

    • 不是一个直接的答案,而是一个有效的论点和非常好的链接选择!
    • 大声笑,有点跑题了,但我听说过使用缓冲区导航打开的文件的最佳案例 - 阅读本文后,我将尝试使用缓冲区!
    • “使用大写字母标记跳回您知道会跳回的缓冲区。” 哇。这是我生命中缺少的东西。
    • fzf.vim 用于切换缓冲区,打开带有模糊名称输入的文件。
    【解决方案2】:

    显示关闭按钮

    'tabline' 选项可以为关闭选项卡按钮包含一个%X 标记,但这仅适用于控制台版本的选项卡行。 :help 'guitablabel' 明确声明:

    请注意,该选项不使用语法突出显示。 %T 和 %X 项也会被忽略。

    所以,要真正得到你想要的,你必须切换到(更丑的)基于文本的标签行

    :set guioptions-=e
    

    但请注意,在 Vim 中不鼓励使用鼠标(即使您可能会被其他应用程序(例如 Web 浏览器选项卡)自定义为鼠标)。如果您在 GUI 选项卡标签上单击鼠标右键,也可以从弹出菜单中选择|Close tab|

    防止标签页关闭

    (请注意,这里不赞成提出多个问题;请分别提出。)

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

    如果您担心丢失窗口/选项卡布局,不妨看看 Vim 会话(可以在后台自动保存)。这将允许使用之前打开的窗口重新启动 Vim。

    【讨论】:

    • 有没有办法挂钩 vim 基本命令,例如 tabclet ?即用您自己的版本替换它们,可能会或可能不会称为原始版本。
    • @majkinetor 不一般;常见的解决方法是定义自定义的大写变体,并通过 cmdalias.vim 插件覆盖原始(小写)内置命令。
    • 这不是解决方法。它完全不同。 :) IMO 不存在这种糟糕的事情。
    【解决方案3】:

    如果你需要这个,你可能做错了。 vim 不需要鼠标。

    但是

    nnoremap <MiddleMouse> :tabclose<CR> 
    

    然后看到TabLineSet.vim : A Vim7 tabline customization

    closers : 将热点(“!”)添加到标签以点击关闭

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多