Как я могу заставить gx распознавать полные URL в vim?

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 patch 183, с Chrome в качестве основного браузера (на OS X 10.9).

Есть ли простой способ, в идеале с минимальной настройкой, чтобы gxраспознать полный URL?

Эндрю Ферье
источник
Я не могу воспроизвести это с vim 7.4 на Linux. Параметр передается Firefox правильно, когда для меня используется 'let g: netrw_browsex_viewer =' firefox '.
PhilippFrank
@PhilippFrank Пример URL также не работает для меня (Vim 7.4, Linux) ... В любом случае, мое решение состоит в том, чтобы выбрать URL в визуальном режиме, а затем использовать gx(что не идеально, но лучше, чем копировать / вставить ).
Мартин Турной
1
Это переменная, а не опция, поэтому вам нужно использовать let.
Мартин Турной
1
Я не могу воспроизвести с GVim 7.4 на Windows и Chrome. Все URL, которые вы упомянули, открыты точно gx.
Гонсалу Рибейро
1
Подтверждение ошибки ОП. Пробовал с VIM 7.4.473 и 7.4.663. Пробовал из аккаунта пользователя prestine (без .vimrc), с разными терминалами ( urxvt, sakura) и разными браузерами ( 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что выберет. (Попробуйте viWстроку в VIM.)

Из документов: <cWORD> is replaced with the WORD under the cursor


Подсказка: при использовании gxв визуальном режиме откроется визуально выбранная строка (независимо от указанной выше конфигурации).

user569825
источник
Другое странное поведение: когда URI заканчивается на a /, он сначала загружается (с помощью curl), а затем открывается. Удаляя завершающий символ /, URI открывается непосредственно в браузере.
user569825
2
«имя пути» определяется 'isfname'параметром, который ?по умолчанию не является допустимым символом имени файла. Изменение этого параметра требует осторожности, поскольку его нельзя установить локально для буфера. Если NetRW не меняет эту опцию, это объясняет, почему URL-адреса OP не работают gx. Возможно, есть разница в используемых версиях NetRW, что объясняет другое поведение, которое видит Carpetsmoker.
jamessan