【问题标题】:How to trigger a Vimperator command after manually openning a new tab?手动打开新标签后如何触发 Vimperator 命令?
【发布时间】:2015-10-10 23:17:30
【问题描述】:

我使用 Vimperator 已经有一段时间了,我对此非常满意,但是我的工作流程出现了中断,这让我很困扰:

有时我会“手动”打开一个新选项卡,即使用 Ctrl+t 甚至单击最后一个选项卡旁边的 + 符号。我知道我可以使用 :tabopen 打开一个新标签,并为此创建了一个方便的映射,但有时我就是不使用它。

我的问题如下:我在我的.vimperatorrc 中设置了set gui=nonavigation,所以当我“手动”打开一个选项卡时,如果我忘记输入o 来触发带有open 命令,而是直接输入 url 我得到了意想不到的结果,因为我输入为 url 的键被简单地视为 vimperator 输入。

所以我的问题是: 是否可以在使用 Ctrl+t 或点击+ 符号后触发 vimperator 命令?这个想法是在这两个事件之后自动输入o,所以我直接在命令行中使用open 命令来完成。

【问题讨论】:

    标签: firefox firefox-addon vimperator


    【解决方案1】:

    Pentadactyl:通用解决方案

    此解决方案适用于 Pentadactyl(我将在此处包括,因为 Pentadactyl 属于 SO 上的 Vimperator 标签)。

    应该在 Vimperator 上也可以工作,但不能(至少在我的版本上),因为 Vimperator 是无可救药的错误。应该可以解决这些错误,但是我尝试时没有找到方法。

    无论如何,正确的做法是使用自动命令,只要加载了about:newtab url,就会执行该命令。

    • 加载新标签页时开始:open命令:

      autocmd PageLoadPre about:newtab normal o
      
    • 加载或切换到新标签页时开始:open命令:

      autocmd LocationChange about:newtab normal o 
      

    【讨论】:

    • 非常好的答案,非常感谢!老实说,我已经忘记了这个问题,但我很高兴你给了我一个很好的方法来做到这一点。也只是因为我很好奇,你能解释一下为什么在打开新标签(CTRL+t+ 符号)时会触发 autocmd,但在我使用:winopen 时不会触发?这对我来说似乎很奇怪,因为:winopen 会打开一个带有about:newtab 的窗口。
    • @statox:我不确定为什么会这样。可能与窗口局部变量有关。在我的 Pentadactyl 中,自动命令在新窗口中有效,但在启动第一个选项卡时无效,因此您可以使用命令 :winopen | open about:newtab 获得正确的行为。你可以将它映射到一个键或一个新命令(你不能重新定义内置命令,尽管如果你追踪将命令名称映射到命令的数据结构,你可能会用 JS 解决这个问题。)
    • 我觉得定义一个新命令的想法其实很不错。非常感谢您的回答。
    【解决方案2】:

    自从我写这个问题以来,我改变了插件,现在使用 pentadactyl 而不是 vimperator,但我已经解决了以下映射的问题,它应该适用于两者:

    nmap <C-t> :tabopen<CR>o
    

    这样 Ctrl+t 将打开新标签并触发:open 命令。

    这不是一个完美的解决方案,因为它不适用于使用 + 符号打开的选项卡,但它是一种解决方法。

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 2012-08-29
      • 2015-05-17
      • 1970-01-01
      • 2022-12-04
      • 2012-08-26
      • 2015-07-14
      • 2013-07-10
      • 2014-10-17
      相关资源
      最近更新 更多