如何使gx识别vim中的完整URL?


19

默认情况下,如果vim中的缓冲区包含URL(例如)http://www.google.com,则gx在正常模式下将使用该URL打开浏览器。非常方便。但是,如果URL具有URL参数(例如http://www.google.com/search?q=stuff),则将丢失URL参数(即,仅http://www.google.com/search将其打开)。

我正在使用MacVim 7.4补丁183,将Chrome作为主要浏览器(在OS X 10.9上)。

是否有一种简单的方法,最好是最少的自定义,即可gx识别完整的URL?


我无法在Linux上使用vim 7.4进行复制。当我使用'let g:netrw_browsex_viewer ='firefox'时,该参数正确传递给了firefox。
PhilippFrank

@PhilippFrank示例URL也不适合我(Vim 7.4,Linux)……无论如何,我的解决方案是在可视模式下选择URL,然后使用gx(虽然不理想,但比复制/粘贴更好) )。
马丁·图尔诺伊

1
这是一个变量,而不是一个选项,因此您需要使用let
马丁·图尔诺伊

1
我无法在Windows和Chrome上使用GVim 7.4进行复制。您提到的所有URL都由完全打开gx
贡萨洛Ribeiro的

1
确认OP的错误。尝试使用VIM 7.4.473和7.4.663。试图从prestine用户帐户(无.vimrc)中,用不同的终端(urxvtsakura)和不同的浏览器(g:netrw_browsex_viewer设定为'uzbl-browser'/ 'firefox'/ 'google-chrome'
user569825

Answers:


13

正如@Carpetsmoker在其评论中指出的那样,g:netrw_gx确定哪些内容将被视为URI的一部分。

默认情况下,它设置为"<cfile>"。从文档(:help <cfile>):

<cfile> is replaced with the path name under the cursor

它使我无所适从,为什么?将URL的参数部分(即)作为“路径名”的部分而忽略,但是我最终选择设置以下内容作为解决方案:

" Use whole "words" when opening URLs.
" This avoids cutting off parameters (after '?') and anchors (after '#'). 
" See http://vi.stackexchange.com/q/2801/1631
let g:netrw_gx="<cWORD>"                                                                                                                   

现在,这包括W将要选择的内容。(尝试viW在VIM中使用字符串。)

从文档: <cWORD> is replaced with the WORD under the cursor


提示:gx可视模式下使用,它将打开可视选择的字符串(无论以上配置如何)。


另一个奇怪的行为:当URI以结尾时/,首先下载(带有curl),然后打开。删除结尾/的URI会在浏览器中直接打开。
user569825

2
“路径名”由'isfname'选项定义?,默认情况下不包含为有效的文件名字符。更改此选项需要格外小心,因为无法将其设置为缓冲区本地。除非NetRW更改此选项,否则这说明了OP网址不能使用的原因gx。也许所使用的NetRW版本存在差异,这可以解释Carpetsmoker看到的不同行为。
jamessan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.