Jak sprawić, by gx rozpoznał pełne adresy URL w vimie?

19

Domyślnie, jeśli bufor w vimie zawiera adres URL taki jak http://www.google.com, gxw trybie normalnym otworzy przeglądarkę z tym adresem URL. To bardzo przydatne. Jeśli jednak adres URL ma parametry adresu URL (np. http://www.google.com/search?q=stuff), Wówczas parametry adresu URL są pomijane (tzn. Po prostu http://www.google.com/searchsą otwierane).

Używam MacVim 7.4 łatka 183, z Chrome jako podstawową przeglądarką (w OS X 10.9).

Czy istnieje prosty sposób, najlepiej przy minimalnym dostosowaniu, aby gxrozpoznać pełny adres URL?

Andrew Ferrier
źródło
Nie mogę tego odtworzyć w vimie 7.4 na Linuksie. Ten parametr jest poprawnie przekazywany do firefox, gdy używasz dla mnie 'let g: netrw_browsex_viewer =' firefox '.
PhilippFrank
@ PhilippFrank Przykładowy adres URL również nie działa dla mnie (Vim 7.4, Linux) ... W każdym razie moim rozwiązaniem jest wybranie adresu URL w trybie wizualnym, a następnie użycie gx(co nie jest idealne, ale lepsze niż kopiowanie / wklejanie ).
Martin Tournoij
1
Jest to zmienna, a nie opcja, więc musisz jej użyć let.
Martin Tournoij
1
Nie mogę powielać się w GVim 7.4 na Windowsie i Chrome. Wszystkie wymienione adresy URL są otwierane dokładnie przez gx.
Gonçalo Ribeiro
1
Potwierdzenie błędu OP. Próbowałem z VIM 7.4.473 i 7.4.663. Próbowałem z prestiżowego konta użytkownika (bez .vimrc), z różnymi terminalami ( urxvt, sakura) i różnymi przeglądarkami ( g:netrw_browsex_viewerustawione na 'uzbl-browser'/ 'firefox'/ 'google-chrome'.
user569825

Odpowiedzi:

13

Jak wskazuje @Carpetsmoker w swoim komentarzu, g:netrw_gxokreśla, co będzie uważane za część identyfikatora URI.

Domyślnie jest ustawiony na "<cfile>". Z docs ( :help <cfile>):

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

Ucieka mi to, dlaczego części parametrów (tj. ?) Adresu URL są ignorowane jako części „nazwy ścieżki”, ale ostatecznie zdecydowałem się ustawić następujące rozwiązanie:

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

Teraz obejmuje to wszystko W, co by wybrał. (Spróbuj viWw VIM.)

Z dokumentów: <cWORD> is replaced with the WORD under the cursor


Wskazówka: gxW trybie wizualnym otworzy wizualnie wybrany ciąg (niezależnie od powyższej konfiguracji).

użytkownik569825
źródło
Kolejne dziwne zachowanie: gdy identyfikator URI kończy się na a /, jest najpierw pobierany (z curl), a następnie otwierany. Po usunięciu końcowego /URI jest otwierany bezpośrednio w przeglądarce.
user569825 17.04.15
2
„nazwa ścieżki” jest zdefiniowana przez 'isfname'opcję, która ?domyślnie nie zawiera prawidłowego znaku nazwy pliku. Zmiana tej opcji wymaga ostrożności, ponieważ nie można jej ustawić lokalnie dla bufora. O ile NetRW nie zmieni tej opcji, to wyjaśnia, dlaczego adresy URL PO nie działają gx. Być może istnieje różnica w zastosowanych wersjach NetRW, co tłumaczy różne zachowanie, które widzi Carpetsmoker.
jamessan