http://www.google.com
之类的URL,则在正常模式下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?
#1 楼
正如@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
会选择的内容。 (尝试在VIM中的字符串上使用viW
。)从文档:
<cWORD> is replaced with the WORD under the cursor
提示:在可视模式下使用
gx
,它将打开可视选择的字符串(无论以上配置如何)。评论
另一个奇怪的行为:当URI以/结束时,它首先被下载(带有curl),然后被打开。删除结尾的/,将在浏览器中直接打开URI。
–user569825
15年4月17日在18:10
“路径名”由“ isfname”选项定义,其中不包括?默认情况下为有效的文件名字符。更改此选项需要格外小心,因为不能将其设置为本地缓冲区。除非NetRW更改此选项,否则这说明了为什么OP网址不能与gx一起使用。也许使用的NetRW版本存在差异,这可以解释Carpetsmoker看到的不同行为。
–詹姆斯
2015年4月17日在21:28
#2 楼
在Mac上,我必须在.vimrc
中使用以下内容:nmap gx viW"ay:!open <C-R>a &<CR>
说明:
viW"ay
复制到a
寄存器中<C-R>a
从中粘贴!open
调用MacOS默认打开工具。
评论
我无法在Linux上的vim 7.4上重现这一点。当对我使用'let g:netrw_browsex_viewer ='firefox'时,该参数会正确传递给firefox。@PhilippFrank示例URL也不适合我(Vim 7.4,Linux)……无论如何,我的解决方案是在可视模式下选择URL,然后使用gx(虽然不理想,但比复制/粘贴)。
这是一个变量,而不是一个选项,因此您需要使用let。
我无法在Windows和Chrome上使用GVim 7.4进行复制。您提到的所有URL均由gx完全打开。
确认OP的错误。尝试使用VIM 7.4.473和7.4.663。从预设的用户帐户(无.vimrc)尝试过,具有不同的终端(urxvt,sakura)和不同的浏览器(g:netrw_browsex_viewer设置为'uzbl-browser'/'firefox'/'google-chrome'。