解决方案。

解决方案。

有人知道我是否可以将所有与表达式匹配的选项卡移动到不同的选项卡组中吗?如果可以,该怎么做?

答案1

解决方案。

  • 以下 Pentadactyl ex 文件(嵌入了 Javascript)应提供一个命令,该命令会将所有选项卡的标签与正则表达式进行匹配,并将匹配的选项卡移动到具有指定 ID 的组中。请注意,匹配不区分大小写。

    " tgroup-moveselected.penta
    " Provides the command tgroup-moveselected, which moves all tabs matching a
    " given regular expression to the group with specified id.
    " eg.  :tgroup-moveselected "penta" "pentadactyl"
    "      moves any tabs whose label matches /pentadactyl/ to the group with id "penta"
    " Requires the TabGroupie plugin.
    
    command! tgroup-moveselected 
        \ -nargs=+ 
        \ -description "move tabs matching regex to a given group" 
        \ -js tgroupMoveSelected(args[0], RegExp(args[1]))
    
    js <<EOF
    
    function getPlugin(s) {
        for (x in plugins.contexts) {
            if (x.contains(s))
                return plugins.contexts[x][s];
        }
    }
    
    var TabGroupie = getPlugin("TabGroupie");
    
    function matchingTabs(rx) {
        var alltabs = tabs.allTabs;
        var alltabs = gBrowser.getTabsToTheEndFrom(0);
        function matches(t) {
            return rx.test(t.label.toLowerCase());
        }
        var matching = alltabs.filter(matches);
        return matching;
    }
    
    function matchingTabsInGroup(rx) {
        var alltabs = gBrowser.getTabsToTheEndFrom(0);
        function matches(t) {
            return rx.test(t.label.toLowerCase());
        }
        var matching = alltabs.filter(matches);
        return matching;
    }
    
    function tgroupMoveSelected (targetgrp, rx) {
        var matching = matchingTabs(rx);
        var tgrpId = TabGroupie.getIdByTitle(targetgrp);
        var i, t;
        for (i=0; i<matching.length; ++i) {
            t = matching[i];
            TabView.moveTabTo(t, tgrpId);
        }
        TabView.hide();
    }
    
    EOF
    
  • 我已将其上传到 Github 作为要旨,因此如果您愿意的话可以从那里下载。

  • 此脚本需要标签群组插入。

    警告:在我的系统上,放置此插件~/.pentadactyl/plugins(在 Pentadactyl 启动时加载)会完全破坏标签组功能。要修复它,我必须禁用 Pentadactyl,重新启动 FF 并重新启用 Pentadactyl。解决方案似乎是加载 TabGroupiePentadactyl 已启动(通过将其从/plugins/目录中删除,并在 FF 启动后进行采购)。

推荐设置

  • 保存两者tgroup-moveselected.pentaTabGroupie.js在您的~/.pentadactyl目录中。

  • 将以下行添加到您的.pentadactylrc

    command! tginit :source ~/.pentadactyl/TabGroupie.js | source ~/.pentadactyl/tgroupmoveselected.penta
    
  • 当您启动 FF 时,您可以使用命令初始化 Pentadactyl 选项卡组功能:tginit

  • 如果您想要频繁使用某个模式和/或选项卡组,则可以创建映射或命令作为快捷方式。例如,如果您想使用C-m热键将标题中带有“pentadactyl”的所有选项卡发送到 ID 为“penta”的选项卡组,则可以使用以下命令:

    :map <C-m> :tgroup-moveselected "penta" "pentadactyl"<CR>
    

相关内容