代码: 全选
nmap tf :!firefox <url><CR> "<url>代指要打开的URL
我希望火狐能在后台打开。加过 & 了,结果gVim除了显示它执行了这条命令外,就什么反应也没有了(根本没有执行火狐)。
不知哪位有办法教教我?
代码: 全选
nmap tf :!firefox <url><CR> "<url>代指要打开的URL
代码: 全选
nmap <silent> tf :!firefox <url><CR> "<url>代指要打开的URL
代码: 全选
" 平台判断[[[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
我的火狐是3.0.10的,fork不出去啊!gnome-open倒可以一试。starwing 写了: 还有,在我的9.04, 火狐3.5.b4上面,直接:!firefox火狐就自己fork出去了,只剩下一个hitenter提示……所以貌似不需要这么麻烦……
相当的爽,不过有个地方有问题Windows下把start改成explorer就可以了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
谢谢支持!iny 写了: 相当的爽,不过有个地方有问题Windows下把start改成explorer就可以了
嗯,我反复测试了,只要把start改成explorer就可以用IE打开了,Windows上用IE方便,毕竟这是集成了,呵呵lilydjwg 写了:谢谢支持!iny 写了: 相当的爽,不过有个地方有问题Windows下把start改成explorer就可以了
Windows下没试过,不知道是什么问题。不过要改的话,我宁愿改成 firefox (我已经把一个包含 firefox.lnk 的文件夹加到%PATH%里去了。)
要鼠标操作的话,你点两下就可以了嘛:第一下把光标移过去,第二下打开链接。iny 写了: 另外有个问题请教,能不能抓取鼠标所在位置?否则还得把光标放到url的地方才能操作,如果能抓取鼠标位置,那就简直完美了。
代码: 全选
nmap <2-LeftMouse> :call Lilydjwg_open_url()<CR>