Scite 打开 URL |
|
以下函数将选定的文本作为 URL 在默认浏览器中打开。如果没有选择,则解析光标下的文本,并将以 'http://
'、'ftp://
' 或 'www.
' 开头的任何内容视为 URL。URL 必须位于同一行上,并以空格或单引号或双引号分隔。
该函数可以设置为快捷键,例如,使用属性文件中的以下条目设置为 Ctrl+'
command.name.1.*=Open URL in Browser command.1.*=open_url command.subsystem.1.*=3 command.mode.1.*=savebefore:no command.shortcut.1.*=Ctrl+'
此函数已在 Ubuntu 6.10 上测试,应该在更高版本的 Ubuntu 上运行。它用 Lua 5.1 编写,因此需要 SciTE 1.74 或更高版本。URL 提取代码很原始,可能需要改进。没有文本编码处理;文本在函数本身中作为 8 位字节获取和处理,没有任何转换。
-- opens URL via selection or by checking text under cursor -- Kein-Hong Man <[email protected]> Public Domain 2008 -- * execute call is non-Win32! tested on Ubuntu 6.10 -- * URL delimited by ", ' or whitespace -- * does nothing about text encoding! function open_url() local string = string local function charat(s, p) return string.sub(s, p, p) end local function delim(c) return string.match(c, "[\"'%s]") end -- if there is a selection, use exactly, else analyze local txt = editor:GetSelText() if #txt == 0 then -- get details of current line, position local p1 = editor.CurrentPos local ln = editor:LineFromPosition(p1) txt = editor:GetLine(ln) if not txt then return end local p2 = editor:PositionFromLine(ln) p1 = p1 - p2 + 1; p2 = p1 -- extend text segment to left while p1 > 1 do if delim(charat(txt, p1 - 1)) then break end p1 = p1 - 1 end -- extend text segment to right while p2 <= #txt do if delim(charat(txt, p2)) then break end p2 = p2 + 1 end -- exit if nothing matched if p1 == p2 then return end txt = string.sub(txt, p1, p2 - 1) else -- trim extraneous whitespace txt = string.gsub(txt, "^%s*(.-)%s*$", "%1") -- fail on embedded whitespace if string.match(txt, "%s") then return end end if string.match(txt, "^http://.+") or string.match(txt, "^ftp://.+") or string.match(txt, "^www%..+") then --print("URL='"..txt.."'") --DEBUG os.execute("x-www-browser "..txt.." &") end end
其他说明:'gnome-open
' 也可以用作 'x-www-browser
' 的替代。前者更灵活,但可能不如后者便携。(如果有人可以澄清 'gnome-open
' 是否在 KDE 发行版中工作,请更新此 wiki。)
请注意,在 Windows 上,Ctrl+Shift+O
已经使用默认浏览器打开了光标下的 URL,这要感谢 Philippe Lhoste。以下的曲折之处归咎于 SciTE 的灵活性。无论如何,以下信息对于想要实现非标准行为的用户很有用。
在 Windows 上,以下替换(请将浏览器的可执行文件路径更改为机器上的正确路径)可以工作,但 os.execute()
可能会导致控制台窗口“闪烁”(短暂打开和关闭)
os.execute([[D:\\Programs\\FirefoxPortable\\FirefoxPortable ]]..txt.." &")
或者,以下快捷键在 Windows 上有效,但您需要先选择 URL
command.name.1.*=Open URL in Browser command.1.*=d:/Programs/FirefoxPortable/FirefoxPortable $(CurrentSelection) command.subsystem.1.*=1 command.mode.1.*=savebefore:no command.shortcut.1.*=Ctrl+'
'start <url>
' 这种用法似乎不起作用,因为在以上两种情况下,SciTE 都试图通过启动可执行文件来执行一个进程。然而,start
似乎与命令解释器绑定,因此似乎无法在这里使用。(此行为尚未经过全面测试,因此如果错误,请更新此页面。)
我还没有研究如何在 Windows 上检索默认浏览器路径,因此如果您知道在 Windows 上打开 URL 的更好方法,请更新此信息。
--KeinHongMan--
注意:虽然上述技术很有趣,但您需要知道 SciTE 很久以前就允许使用 Ctrl+Shift+O 快捷键打开 URL(或路径)。并自动选择 URL,如果出现问题,则可以先手动选择完整路径/URL。--PhiippeLhoste?--