用浏览器在Vim中的光标下打开URL

我第一次使用Twitvim。 看到里面的所有url让我想知道,有什么办法可以在你喜欢的浏览器或指定的浏览器中打开光标下的URL?

更新:从今天的tpope的鸣叫

gx 。 您可以自定义浏览器。 在Gnome和Mac OS X上已经使用gnome-open / open 。 一般来说,你可以将g:netrw_browsex_viewer设置为你想要的任何东西。


原始答案:

不记得我在哪里得到这个function。 在url中有一个哈希(#)的错误,但function工作得不错,我不打扰修复它。

 function! HandleURL() let s:uri = matchstr(getline("."), '[az]*:\/\/[^ >,;]*') echo s:uri if s:uri != "" silent exec "!open '".s:uri."'" else echo "No URI found in line." endif endfunction map <leader>u :call HandleURL()<cr> 

注意:如果您不在Mac上,请使用Linux的gnome-open / xdg-open或Windows的“浏览器的path”

如果您使用Vim 7.4或更高版本,在正常模式下,将光标放在URL下,然后单击gx ,URL将在浏览器中自动打开 演示操作

我使用这个脚本searchgooogle keyword下的光标:

 nmap <leader>g :call Google()<CR> fun! Google() let keyword = expand("<cword>") let url = "http://www.google.com/search?q=" . keyword let path = "C:/Program Files/Mozilla Firefox/" exec 'silent !"' . path . 'firefox.exe" ' . url endfun 

你应该使用getline('.')matchstr()来提取光标下的url。 其余的是一样的。

好吧,使用@ tungd和@kev的答案和一点研究,我结束了这个脚本,这只是我需要的方式。 像@ tungd说##可以给一个问题,如果在一个url,但我很酷,如果任何人有一个更好的expression,那么将受到欢迎。

 function! OpenUrlUnderCursor() let path="/Applications/Safari.app" execute "normal BvEy" let url=matchstr(@0, '[az]*:\/\/[^ >,;]*') if url != "" silent exec "!open -a ".path." '".url."'" | redraw! echo "opened ".url else echo "No URL under cursor." endif endfunction nmap <leader>o :call OpenUrlUnderCursor()<CR> 

我对这个派对相当晚,但是这里有另外一种方法可以在Windows 7上使用。

  1. 在vim中同时安装vim-shell和vim-misc我build议通过一个非常棒的病原体插件来完成这个工作,然后简单地cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.git shell.git。 ( 这两个插件在你的默认浏览器中打开URL,而不会产生任何额外的命令提示或其他通常在Windows中需要的愚蠢的废话,你可以在Vim中打开Url,如下所示:Open http://duckduckgo.com 。喜欢它。

  2. 创build一些vim映射,以便快速获取光标下的行到浏览器中。 我会把这个映射到你(对我来说,这是,u从正常模式)。 就是这样:

    nnoremap u:exec“打开”.getline(“。”)

要使用这个映射,请在正常模式+ u下键入您的Leader键。 它应该读取光标下方的行,并在默认浏览器中打开它。

将以下行添加到.vimrc文件中:

 nmap <leader><space> yiW:!xdg-open <cr>" &<cr> 

所以在正常模式下,按下\它select当前的单词并在networking浏览器中将其作为地址打开。

领导默认是\(但我把它映射到, let mapleader = "," )。 类似地,使用imap你可以在插入模式下映射一些键序列(但是,如果它是2键序列,它可能会覆盖一些默认行为)。

你应该快速浏览一下这个vim插件

亨里克/ VIM-开放url

这基本上是在其他一些响应中所解释的,但是如果使用插件pipe理器,则需要特定的configuration:)