复制 IRL 而不是 URL?

复制 IRL 而不是 URL?

IRL 是 UTF-8 编码的页面地址,而 URL 仅允许使用 ascii 的子集,超出该子集的所有内容都采用百分比编码。

在五指形 IRL 中出现,

  • 在地址栏中:

    在此处输入图片描述

  • 作为“推荐人” g Ctrl-g

    在此处输入图片描述

(例如访问此页面:http://ru.wikipedia.org/wiki/Сусанин,_Иван

但是,当复制带有yURL 的地址时,复制的是 IRL,而不是 IRL。Firefox 有一个选项network.standard-url.escape-utf8,允许用户复制 IRL,而不是地址栏中的 URL。但是这个不影响pentadactyl 的y行为。

我认为使用 URL 而不是 IRL 可能有充分的理由,但我想复制 IRL。

一种方法是选择地址栏中的地址,然后复制它。但这很繁琐。

有没有办法用 pentadactyl 中的快捷键复制 IRL 而不是 URL?

编辑

yank-location这是与之绑定的代码y

mappings.add([modes.NORMAL],
    ["y", "<yank-location>"], "Yank current location to the clipboard",
    function () {
        let { doc, uri } = buffer;
        if (uri instanceof Ci.nsIURL)
            uri.query = uri.query.replace(/(?:^|&)utm_[^&]+/g, "")
                                 .replace(/^&/, "");

        let url = options.get("yankshort").getKey(uri) && buffer.shortURL || uri.spec;
        dactyl.clipboardWrite(url, true);
    });

答案1

有趣的想法。我想知道这是否不是默认行为。

粗略猜测:

:map y -js dactyl.clipboardWrite(util.losslessDecodeURI(buffer.uri.spec), true)

但请注意,这会破坏提取短 URI(例如在 YouTube 上)以及可能的其他一些东西。

y或者您可以调整来自的完整代码commons/modules/buffer.jsm

com yanklocation -description "Yank current location to the clipboard" 
    \ -js <<_EOF
    let { doc, uri } = buffer;
    if (uri instanceof Ci.nsIURL)
        uri.query = uri.query.replace(/(?:^|&)utm_[^&]+/g, "")
                            .replace(/^&/, "");

    let url = options.get("yankshort").getKey(uri) 
        && buffer.shortURL 
        || uri.spec;
    dactyl.clipboardWrite(util.losslessDecodeURI(url), true);
_EOF
map y -ex yanklocation

相关内容