Come posso fare in modo che gx riconosca gli URL completi in vim?


19

Per impostazione predefinita, se un buffer in vim contiene un URL come http://www.google.com, gxin modalità normale aprirà un browser con quell'URL. È molto utile. Tuttavia, se l'URL ha parametri URL (ad es. http://www.google.com/search?q=stuff), I parametri URL vengono persi (ovvero http://www.google.com/searchviene appena aperto).

Sto usando MacVim 7.4 patch 183, con Chrome come browser principale (su OS X 10.9).

Esiste un modo semplice, idealmente con personalizzazione minima, per far gxriconoscere un URL completo?


Non riesco a riprodurlo con Vim 7.4 su Linux. Il parametro viene passato a firefox correttamente quando utilizzo 'let g: netrw_browsex_viewer =' firefox 'per me.
PhilippFrank,

@PhilippFrank L'URL di esempio non funziona neanche per me (Vim 7.4, Linux) ... In ogni caso, la mia soluzione è selezionare l'URL in modalità visiva e quindi utilizzare gx(che non è l'ideale ma migliore di copia / incolla ).
Martin Tournoij,

1
È una variabile, non un'opzione, quindi è necessario utilizzare let.
Martin Tournoij,

1
Non riesco a riprodurre con GVim 7.4 su Windows e Chrome. Tutti gli URL che hai citato vengono aperti esattamente da gx.
Gonçalo Ribeiro,

1
Conferma dell'errore dell'OP. Provato con VIM 7.4.473 e 7.4.663. Provato da un account utente di prestigio (senza .vimrc), con terminali diversi ( urxvt, sakura) e browser diversi ( g:netrw_browsex_viewerimpostato su 'uzbl-browser'/ 'firefox'/ 'google-chrome'.
user569825

Risposte:


13

Come sottolinea @Carpetsmoker nel suo commento, g:netrw_gxdetermina cosa verrà considerato parte di un URI.

Per impostazione predefinita, è impostato su "<cfile>". Dai documenti ( :help <cfile>):

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

Mi sfugge, perché le parti di parametro (ovvero ?) di un URL vengono ignorate come parti di un "nome percorso", ma alla fine ho scelto di impostare quanto segue, come mia soluzione:

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

Ora questo include tutto ciò Wche sceglierebbe. (Prova viWuna stringa in VIM.)

Dai documenti: <cWORD> is replaced with the WORD under the cursor


Suggerimento: utilizzando gxin modalità visiva , aprirà la stringa visivamente selezionata (indipendentemente dalla configurazione sopra).


Un altro strano comportamento: quando l'URI termina in a /, viene prima scaricato (con curl) e quindi aperto. Rimuovendo il finale /, l'URI viene aperto direttamente nel browser.
user569825,

2
"nome percorso" è definito 'isfname'dall'opzione, che ?per impostazione predefinita non include un carattere nome file valido. La modifica di questa opzione richiede attenzione perché non può essere impostata localmente sul buffer. A meno che NetRW non stia modificando questa opzione, ciò spiega perché gli URL dei PO non funzionano gx. Forse c'è una differenza nelle versioni di NetRW in uso, il che spiegherebbe il diverso comportamento che vede Carpetsmoker.
Jamessan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.