当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 13:16 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
文件中经常会有一些URL,所以想加个键映射,方便地打开URL:
代码:
nmap tf :!firefox <url><CR> "<url>代指要打开的URL

可是这样的话,gVim就会等待火狐结束(除非火狐已经由其它方式打开)。

我希望火狐能在后台打开。加过 & 了,结果gVim除了显示它执行了这条命令外,就什么反应也没有了(根本没有执行火狐)。
不知哪位有办法教教我?


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


最后由 lilydjwg 编辑于 2009-05-18 16:18,总共编辑了 1 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 怎样实现:gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 13:55 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
代码:
nmap <silent> tf :!firefox <url><CR> "<url>代指要打开的URL


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 怎样实现:gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 14:00 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
怎么设置使用Ctrl + Click就打开URL链接?


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 怎样实现:gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 14:13 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
回2楼:我也试过silent,没有用的,还是得等火狐结束。

回3楼:左键的话
代码:
nmap <C-LeftMouse> <open_url>  "<open_url>部分依你的需求自己写吧


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 怎样实现:gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 14:49 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
的确不行,等到高人
PS:open_url不会写,呵呵


页首
 用户资料  
 
6 楼 
 文章标题 : 分享:gVim打开光标处的URL函数
帖子发表于 : 2009-05-18 15:53 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
累了好久,终于写出个像样的了,只是仍不能排除结尾的英文句号(.)。
第一个函数改自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

"  用火狐打开链接[[[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

目前未经充分测试,若发现问题请回复我。


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 18:21 

注册: 2008-09-19 1:03
帖子: 100
送出感谢: 0 次
接收感谢: 1
不一定非要firefox。你可以用gnome-open,或者跟winmanager一样,做几个脚本,比如start.gnome, start.kde等等,这样比较方便。

还有,在我的9.04, 火狐3.5.b4上面,直接:!firefox火狐就自己fork出去了,只剩下一个hitenter提示……所以貌似不需要这么麻烦……


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-18 19:38 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
starwing 写道:
还有,在我的9.04, 火狐3.5.b4上面,直接:!firefox火狐就自己fork出去了,只剩下一个hitenter提示……所以貌似不需要这么麻烦……

我的火狐是3.0.10的,fork不出去啊!gnome-open倒可以一试。


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 分享:gVim打开光标处的URL函数
帖子发表于 : 2009-05-19 1:21 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
累了好久,终于写出个像样的了,只是仍不能排除结尾的英文句号(.)。
第一个函数改自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

"  用火狐打开链接[[[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

目前未经充分测试,若发现问题请回复我。


相当的爽,不过有个地方有问题Windows下把start改成explorer就可以了 :em11


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-19 12:40 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
iny 写道:
相当的爽,不过有个地方有问题Windows下把start改成explorer就可以了 :em11

谢谢支持!
Windows下没试过,不知道是什么问题。不过要改的话,我宁愿改成 firefox (我已经把一个包含 firefox.lnk 的文件夹加到%PATH%里去了。)


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-19 13:05 

注册: 2008-05-22 9:43
帖子: 142
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
iny 写道:
相当的爽,不过有个地方有问题Windows下把start改成explorer就可以了 :em11

谢谢支持!
Windows下没试过,不知道是什么问题。不过要改的话,我宁愿改成 firefox (我已经把一个包含 firefox.lnk 的文件夹加到%PATH%里去了。)


嗯,我反复测试了,只要把start改成explorer就可以用IE打开了,Windows上用IE方便,毕竟这是集成了,呵呵

另外有个问题请教,能不能抓取鼠标所在位置?否则还得把光标放到url的地方才能操作,如果能抓取鼠标位置,那就简直完美了。 :em02


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-19 18:16 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
iny 写道:
另外有个问题请教,能不能抓取鼠标所在位置?否则还得把光标放到url的地方才能操作,如果能抓取鼠标位置,那就简直完美了。 :em02

要鼠标操作的话,你点两下就可以了嘛:第一下把光标移过去,第二下打开链接。
愿意看代码的话,可以看看VimExplorer的,它似乎做到了。


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-19 18:22 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
Try this:
代码:
nmap <2-LeftMouse> :call Lilydjwg_open_url()<CR>


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
14 楼 
 文章标题 : 新发现:在终端的Vim中用鼠标双击(或右键有弹出菜单)链接即可打开链接!
帖子发表于 : 2009-05-21 22:09 
头像

注册: 2009-04-11 23:46
帖子: 4030
系统: Arch Linux
送出感谢: 11
接收感谢: 110
RT。看来终端也是很好用的~!


_________________
我的博客 http://blog.lilydjwg.me/
Dropbox,你值得拥有。
提问的智慧
Arch Linux 中文论坛

我的vimrc: http://git.io/vimrc


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 已实现:用火狐开启gVim中的URL - gVim中调用外部程序,但不要gVim去等它结束
帖子发表于 : 2009-05-21 22:12 
头像

注册: 2009-05-20 19:32
帖子: 2462
送出感谢: 0 次
接收感谢: 2
irc <fvw> say: 那是终端的扩展 rxvt就有。


_________________
irc 聊天室
ubuntu-cn 的irc 频道为
irc.ubuntu.com 8001 #ubuntu-cn
UTF8编码 可用 irssi xchat pidgin weechat 登录

http://webchat.freenode.net/?channels=ubuntu-cn
irc://irc.freenode.net/ubuntu-cn


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译