Scite 打开 URL

lua-users home
wiki

将选定内容或光标下的文本作为 URL 打开 (Linux)

以下函数将选定的文本作为 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。)

将选定内容或光标下的文本作为 URL 打开 (Windows)

请注意,在 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?--


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2014 年 12 月 14 日上午 8:46 GMT (差异)