用浏览器在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上使用。
-
在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
。喜欢它。 ) -
创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:)