20

默认情况下,如果vim中的缓冲区包含URL,例如/code>, gx 在正常模式下,将使用该URL打开浏览器。那很方便。但是,如果该网址具有网址参数(例如/search?q=stuff),则网址参数会丢失(即/search 打开)。

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

有没有一种简便的方法,最好是最少的自定义,以使gx 识别完整的URL?

分享 | 改善这个问题 | |
  • I can't reproduce that with vim 7.4 on linux. The parameter is passed to firefox correctly when using 'let g:netrw_browsex_viewer='firefox' for me. – 菲利普·弗兰克 2015年3月31日13:27
  • @PhilippFrank The example URL doesn't work for me either (Vim 7.4, Linux) ... In any case, my solution is to select the URL in visual mode, and then use gx (这不理想,但比复制/粘贴更好)。 – 马丁·图尔诺伊(Martin Tournoij) 2015-03-31 13:29
  • 1
    它's是变量,而不是选项,因此您需要使用. – 马丁·图尔诺伊(Martin Tournoij) 2015年3月31日13:50
  • 1
    我无法在Windows和Chrome上使用GVim 7.4进行复制。您提到的所有URL均由gx. – 贡ç alo Ribeiro 15年4月4日在14:57
  • 1
    确认OP'的错误。尝试使用VIM 7.4.473& 7.4.663。试过了从普通用户帐户 (无.vimrc),带有不同的端子(urxvt, 樱花)和其他浏览器(g:netrw_browsex_viewer 调成'uzbl浏览器'/'火狐'/'谷歌浏览器'. – 用户名 15年4月6日在11:05
13

As @Carpetsmoker points out in his comment, g:netrw_gx 确定什么将被视为URI的一部分。

默认情况下设置为"<c文件>". From the docs (:救命<c文件>):

<c文件> 替换为光标下的路径名

It escapes me, 为什么 参数部分(即?网址的)被忽略为“路径名”的一部分,但我最终选择设置以下内容作为解决方案:

打开网址时,请使用整个“单词”。
“这样可以避免切断参数(在'?'之后)和锚点(在'#'之后)。
“参见/q/2801/1631
let g:netrw_gx="<cWORD>"                                                                                                                   

现在这包括任何W 会选择。 (尝试大众 在VIM中的字符串上。)

从文档: <单词> 被光标下的WORD替换


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

分享 | 改善这个答案 | |
  • 另一个奇怪的行为:当URI以/,'首次下载(带有卷曲),然后打开。删除尾随/,将在浏览器中直接打开URI。 – 用户名 15年4月17日在18:10
  • 2
    "路径名" 由'isfname' 选项,没有'包括? 默认情况下为有效的文件名字符。更改此选项需要小心,因为它可以'不能设置为本地缓冲区。除非NetRW更改此选项,否则这说明了为什么OP URL不'与合作gx. Maybe there'所使用的NetRW版本有所不同,这可以解释Carpetsmoker看到的不同行为。 – 詹姆士山 15年4月17日在21:28
0

在Mac上,我必须在我的计算机上使用以下命令.vimrc

nmap gx viW"ay :!打开<C一>a &<CR>

说明:

  • 大众"y 复制到a 寄存器
  • <C一>a 从中粘贴
  • !打开 调用MacOS默认打开工具。
分享 | 改善这个答案 | |
新的贡献者
帕特里克 是该站点的新贡献者。请务必澄清,评论和回答。 看看我们的行为守则.

你的答案

点击“发布您的答案”即表示您同意我们的服务条款, 隐私政策Cookie政策

不是你的答案&#x27;在寻找吗?浏览其他标记的问题外部命令 网络 要么问你自己的问题.