我想在 texstudio 中制作一个简单的脚本,可以用来在浏览器中搜索选定的单词。
一切都正常,只是我无法正确调用查询命令。
“?”似乎被截断了。但是替换、urlencoding 等也不起作用。
我该如何对 URL 中的“?”进行编码,或者是否有我可以尝试的标志?
我尝试了 system() 和 buildManager.runCommand(),在这种情况下,两者执行的操作相同。
%SCRIPT
u=encodeURI("https://ecosia.org/search?q="+cursor.selectedText())
//u=encodeURI("https://ecosia.org/search\?q="+cursor.selectedText())
//u="https://ecosia.org/search\\%3Fq="+cursor.selectedText()
//u="https://ecosia.org/search%3Fq="+cursor.selectedText()
//u="https://ecosia.org/search?q="+cursor.selectedText()
//u="https://ecosia.org/search\?q="+cursor.selectedText()
//buildManager.runCommand("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
这些是我尝试过的一些组合……但没有一个能达到预期的效果。日志中的结果如下:
Prozess gestartet: "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "https://ecosia.org/search
任何想法都值得赞赏。谢谢
答案1
我自己找到了答案并将其发布给那些可能感兴趣的人。
当我深入研究 buildmanager.cpp 中的源代码时:
else if (str.at(i) == QChar('?')) {
if (str.at(++i) == QChar('?')) add = "?";
这意味着,当我执行以下操作时,我的宏脚本有效:
%SCRIPT
u="https://ecosia.org/search??q="+cursor.selectedText()
system("\"C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe\" \""+u+"\"")
注意:在系统调用中,“??” 变为“?”。% 和 @ 也一样
现在我可以直接搜索突出显示的文本。(我摆脱了 urlencode,因为缺少 % 导致它的行为不符合预期)