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