Bagaimana saya bisa membuat gx mengenali URL lengkap dalam vim?

19

Secara default, jika buffer dalam vim berisi URL seperti itu http://www.google.com, gxdalam mode normal akan membuka browser dengan URL itu. Itu sangat berguna. Namun, jika URL memiliki parameter URL (mis. http://www.google.com/search?q=stuff), Maka parameter URL terlewatkan (yaitu baru http://www.google.com/searchdibuka).

Saya menggunakan MacVim 7.4 patch 183, dengan Chrome sebagai browser utama (pada OS X 10.9).

Apakah ada cara mudah, idealnya dengan kustomisasi minimal, untuk membuat gxmengenali URL lengkap?

Andrew Ferrier
sumber
Saya tidak dapat mereproduksi dengan vim 7.4 di linux. Parameter diteruskan ke firefox dengan benar ketika menggunakan 'let g: netrw_browsex_viewer =' firefox 'untuk saya.
PhilippFrank
@ PhilippFrank Contoh URL juga tidak berfungsi untuk saya (Vim 7.4, Linux) ... Bagaimanapun juga, solusi saya adalah memilih URL dalam mode visual, dan kemudian menggunakan gx(yang tidak ideal tetapi lebih baik daripada salin / tempel ).
Martin Tournoij
1
Itu variabel, bukan opsi, jadi Anda harus menggunakan let.
Martin Tournoij
1
Saya tidak dapat mereproduksi dengan GVim 7.4 di Windows dan Chrome. Semua URL yang Anda sebutkan dibuka oleh gx.
Gonçalo Ribeiro
1
Mengkonfirmasi kesalahan OP. Sudah mencoba dengan VIM 7.4.473 & 7.4.663. Dicoba dari akun pengguna prestine (tanpa .vimrc), dengan terminal yang berbeda ( urxvt, sakura) dan browser yang berbeda ( g:netrw_browsex_viewerdisetel ke 'uzbl-browser'/ 'firefox'/ 'google-chrome'.
user569825

Jawaban:

13

Sebagaimana @Carpetsmoker tunjukkan dalam komentarnya, g:netrw_gxmenentukan apa yang akan dianggap sebagai bagian dari URI.

Secara default diatur ke "<cfile>". Dari dokumen ( :help <cfile>):

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

Itu lolos saya, mengapa bagian parameter (yaitu ?) dari URL diabaikan sebagai bagian dari "nama jalur", tetapi saya akhirnya memilih untuk mengatur yang berikut, sebagai solusi saya:

" 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>"                                                                                                                   

Sekarang ini termasuk apa pun yang Wakan dipilih. (Coba viWstring dalam VIM.)

Dari dokumen: <cWORD> is replaced with the WORD under the cursor


Petunjuk: Menggunakan gxdalam mode visual , itu akan membuka string yang dipilih secara visual (terlepas dari konfigurasi di atas).

pengguna569825
sumber
Perilaku aneh lainnya: Ketika URI berakhir dengan /, itu pertama kali diunduh (dengan curl) dan kemudian dibuka. Menghapus trailing /, URI langsung dibuka di browser.
user569825
2
"nama jalur" ditentukan oleh 'isfname'opsi, yang tidak termasuk ?sebagai karakter nama file yang valid secara default. Mengubah opsi ini memerlukan kehati-hatian karena tidak dapat diatur secara lokal ke buffer. Kecuali jika NetRW mengubah opsi ini, maka itu menjelaskan mengapa URL OP tidak berfungsi gx. Mungkin ada perbedaan dalam versi NetRW yang digunakan, yang akan menjelaskan perilaku berbeda yang dilihat Carpetsmoker.
jamessan