Як я можу змусити 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 патч 183, з Chrome як основний браузер (на ОС 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.
Gonçalo Ribeiro

1
Підтвердження помилки ОП. Пробували з VIM 7.4.473 та 7.4.663. Пробували з попереднього облікового запису користувача (без .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у візуальному режимі , він відкриє візуально вибрану рядок (незалежно від вищевказаної конфігурації).


Ще одна дивна поведінка: Коли URI закінчується на a /, його спочатку завантажують (з curl), а потім відкривають. Видаляючи трейлінг /, URI безпосередньо відкривається у браузері.
користувач569825

2
"ім'я шляху" визначається 'isfname'параметром, який не містить ?стандартний символ імені файлу за замовчуванням. Зміна цього параметра потребує обережності, оскільки його не можна встановити локальним на буфер. Якщо NetRW не змінить цей параметр, це пояснює, чому URL-адреси ОП не працюють gx. Можливо, є різниця у використовуваних версіях NetRW, які б пояснювали різну поведінку Carpetsmoker.
Jamessan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.