注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

 
 
 

日志

 
 

Vim中用键映射打开URL  

2009-05-18 16:33:50|  分类: Vim |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
累了好久,终于写出个像样的了,只是仍不能排除结尾的英文句号(.)。
第一个函数改自VimExplorer,第二个改自Vimwiki

"  平台判断[[[2
function Lilydjwg_haswin32()
  if (has("win32") || has("win95") || has("win64") || has("win16"))
    return 1
  else
    return 0
  endif
endfunction

"  取得光标处的匹配[[[2
function Lilydjwg_get_pattern_at_cursor(pat) "{{{
  let col = col('.') - 1
  let line = getline('.')
  let ebeg = -1
  let cont = match(line, a:pat, 0)
  while (ebeg >= 0 || (0 <= cont) && (cont <= col))
    let contn = matchend(line, a:pat, cont)
    if (cont <= col) && (col < contn)
      let ebeg = match(line, a:pat, cont)
      let elen = contn - ebeg
      break
    else
      let cont = match(line, a:pat, contn)
    endif
  endwh
  if ebeg >= 0
    return strpart(line, ebeg, elen)
  else
    return ""
  endif
endfunction

"  打开链接(Linux下使用火狐,Windows下使用默认浏览器)[[[2
function Lilydjwg_open_url()
  let s:url = Lilydjwg_get_pattern_at_cursor('\v(https?://|ftp://|file:/{3}|www\.)((\w|-)+\.)+(\w|-)+(:\d+)?/((\w|[~@#$%^&+=/?.-])+)?')
  "  echo s:url
  if s:url == ""
    echohl WarningMsg
    echomsg '在光标处未发现URL!'
    echohl None
  else
    if !Lilydjwg_haswin32()
      call system("firefox " . s:url . " &")
    else
      call system("start " . s:url)
    endif
  endif
    unlet s:url
  endfunction

目前未经充分测试,若发现问题欢迎告诉我。
  评论这张
 
阅读(88)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017