Wie kann ich dafür sorgen, dass gx vollständige URLs in vim erkennt?

19

Wenn ein Puffer in vim eine URL wie enthält http://www.google.com, wird gxim normalen Modus standardmäßig ein Browser mit dieser URL geöffnet. Das ist sehr praktisch. Wenn die URL jedoch URL-Parameter enthält (z. B. http://www.google.com/search?q=stuff), werden die URL-Parameter übersehen (dh nur http://www.google.com/searchgeöffnet).

Ich verwende MacVim 7.4 Patch 183 mit Chrome als primärem Browser (unter OS X 10.9).

Gibt es eine einfache Möglichkeit, idealerweise mit minimaler Anpassung, gxeine vollständige URL zu erkennen?

Andrew Ferrier
quelle
Ich kann das mit vim 7.4 unter Linux nicht reproduzieren. Der Parameter wird korrekt an Firefox übergeben, wenn für mich 'let g: netrw_browsex_viewer =' firefox 'verwendet wird.
PhilippFrank
@PhilippFrank Die Beispiel-URL funktioniert auch bei mir nicht (Vim 7.4, Linux) ... In jedem Fall besteht meine Lösung darin, die URL im visuellen Modus auszuwählen und dann zu verwenden gx(was nicht ideal ist, aber besser als Kopieren / Einfügen) ).
Martin Tournoij
1
Es ist eine Variable, keine Option, daher müssen Sie sie verwenden let.
Martin Tournoij
1
Ich kann mit GVim 7.4 unter Windows und Chrome nicht reproduzieren. Alle von Ihnen genannten URLs werden genau von geöffnet gx.
Gonçalo Ribeiro
1
Bestätigen des OP-Fehlers. Versucht mit VIM 7.4.473 & 7.4.663. Versucht von Prestine-Benutzerkonto (ohne .vimrc), mit verschiedenen Terminals ( urxvt, sakura) und verschiedenen Browsern ( g:netrw_browsex_viewereingestellt auf 'uzbl-browser'/ 'firefox'/ 'google-chrome'.
user569825

Antworten:

13

Bestimmt, wie @Carpetsmoker in seinem Kommentar ausführt, g:netrw_gxwas als Teil eines URI betrachtet wird.

Standardmäßig ist es auf eingestellt "<cfile>". Aus den Dokumenten ( :help <cfile>):

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

Es entgeht mir, warum Parameterteile (dh ?) einer URL als Teile eines "Pfadnamens" ignoriert werden, aber ich entschied mich schließlich dafür, Folgendes als meine Lösung festzulegen:

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

Nun schließt dies alles ein, Wwas ausgewählt werden soll. (Probieren Sie viWeinen String in VIM aus.)

Aus den Dokumenten: <cWORD> is replaced with the WORD under the cursor


Hinweis: gxIm visuellen Modus wird die visuell ausgewählte Zeichenfolge geöffnet (unabhängig von der obigen Konfiguration).

user569825
quelle
Ein weiteres seltsames Verhalten: Wenn der URI auf a endet /, wird er zuerst heruntergeladen (mit curl) und dann geöffnet. Durch Entfernen des Trailings /wird der URI direkt im Browser geöffnet.
user569825
2
"Pfadname" wird durch die 'isfname'Option definiert , die ?standardmäßig kein gültiges Dateinamenzeichen enthält. Das Ändern dieser Option erfordert Sorgfalt, da sie nicht lokal für den Puffer festgelegt werden kann. Wenn NetRW diese Option nicht ändert, erklärt dies, warum die OPs-URLs nicht funktionieren gx. Vielleicht gibt es einen Unterschied in den verwendeten NetRW-Versionen, der das unterschiedliche Verhalten von Carpetsmoker erklären würde.
Jamessan