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ます。
ゴンサロリベイロ

1
OPのエラーを確認します。VIM 7.4.473および7.4.663で試しました。試みprestineユーザアカウントから(なしの.vimrc異なる端末(と)urxvtsakura)と異なるブラウザ(g:netrw_browsex_viewerのセット'uzbl-browser'/ 'firefox'/ 'google-chrome'
user569825

回答:


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は、選択するものがすべて含まれます。(viWVIMで文字列を試してください。)

ドキュメントから: <cWORD> is replaced with the WORD under the cursor


ヒント:使用gx中にビジュアルモードは、(かかわらず、上記構成の)視覚的に選択された文字列を開きます。


別の奇妙な動作:URIがで終わると、/最初に(でcurl)ダウンロードされてから開かれます。末尾のを削除する/と、URIがブラウザーで直接開かれます。
user569825

2
「パス名」は'isfname'オプションによって定義されますが、?デフォルトでは有効なファイル名文字として含まれません。このオプションを変更するには、バッファに対してローカルに設定できないため、注意が必要です。NetRWがこのオプションを変更していない限り、OPs URLがで機能しない理由を説明していますgx。使用されているNetRWバージョンに違いがあるのか​​もしれません。
ジェームスサン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.