Открыть URL под курсором в Vim с помощью браузера - PullRequest
85 голосов
/ 27 февраля 2012

Я использую Twitvim впервые.Просмотр всех URL-адресов заставил меня задуматься, есть ли способ открыть URL-адрес под курсором в вашем любимом браузере или указанном?

Ответы [ 8 ]

152 голосов
/ 27 февраля 2012

Обновлено: из твита tpope сегодня

Нажмите gx. Вы можете настроить браузер. В Gnome и Mac OS X он уже использует gnome-open / open. Как правило, вы можете установить g:netrw_browsex_viewer на что хотите.


Оригинальный ответ:

Не помню, откуда у меня эта функция. В URL есть ошибка с хешем (#), но функция работает достаточно хорошо, и я не буду ее исправлять.

function! HandleURL()
  let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;]*')
  echo s:uri
  if s:uri != ""
    silent exec "!open '".s:uri."'"
  else
    echo "No URI found in line."
  endif
endfunction
map <leader>u :call HandleURL()<cr>

Примечание. Если вы не используете Mac, используйте gnome-open / xdg-open для Linux или «путь к веб-браузеру» для Windows

44 голосов
/ 07 июля 2015

Если вы используете Vim 7.4 или новее, в обычном режиме поместите курсор под URL-адресом, затем нажмите gx, URL-адрес откроется в браузере автоматически demo operate

7 голосов
/ 27 февраля 2012

Я использую этот скрипт для поиска gooogle для keyword под курсором:

nmap <leader>g :call Google()<CR>
fun! Google()
    let keyword = expand("<cword>")
    let url = "http://www.google.com/search?q=" . keyword
    let path = "C:/Program Files/Mozilla Firefox/"
    exec 'silent !"' . path . 'firefox.exe" ' . url
endfun

Вы должны использовать getline('.') и matchstr(), чтобы извлечь URL под курсором. В остальном тоже самое.

1 голос
/ 24 ноября 2013

Добавить следующую строку в файл .vimrc:

nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>

Таким образом, в обычном режиме он нажимает \, выбирает текущее слово и открывает его как адрес в веб-браузере.

Leader по умолчанию - \ (но я сопоставил его с let mapleader = ","). Точно так же, используя imap, вы можете отобразить некоторую последовательность клавиш в режиме вставки (но тогда, если это последовательность клавиш 2, это, вероятно, переопределит некоторое поведение по умолчанию).

1 голос
/ 23 августа 2013

Я довольно опоздал на эту вечеринку, но вот еще один способ сделать это, который особенно хорошо работает в Windows 7.

  1. Установите оба vim-shell и vim-misc в vim Я рекомендую делать это через потрясающий Pathogen плагин, а затем просто cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.git из msysgit.( Эти два плагина открывают URL-адреса в браузере по умолчанию, не создавая дополнительных командных строк или других глупостей, которые обычно требуются в Windows. Вы можете открыть URL-адреса в Vim следующим образом: :Open http://duckduckgo.com. Попробуйте. Вам понравится.)

  2. Создайте несколько отображений vim , чтобы вы могли быстро получить строку под курсором в браузере.Я бы сопоставил это с вами (для меня это ,u из обычного режима).Вот как это делается:

    nnoremap u: exec "Open" .getline (".")

Чтобы использовать это сопоставление, введите свою клавишу Leader из обычного режима + u.Он должен прочитать строку под вашим курсором и открыть ее в браузере по умолчанию.

1 голос
/ 28 февраля 2012

Хорошо, поэтому, используя ответы @tungd и @kev и небольшое исследование, я закончил с этим сценарием, который работает так, как мне нужно.Как сказал @tungd, # может создать проблему, если внутри URL-адреса, но я согласен с этим, если у кого-то есть лучшее выражение для URL-адреса, это будет приветствоваться.

function! OpenUrlUnderCursor()
    let path="/Applications/Safari.app"
    execute "normal BvEy"
    let url=matchstr(@0, '[a-z]*:\/\/[^ >,;]*')
    if url != ""
        silent exec "!open -a ".path." '".url."'" | redraw! 
        echo "opened ".url
    else
        echo "No URL under cursor."
    endif
endfunction
nmap <leader>o :call OpenUrlUnderCursor()<CR>
0 голосов
/ 17 декабря 2018

Это своего рода улучшенная версия скрипта, первоначально предложенная здесь @tungd https://stackoverflow.com/a/9459366/7631731. Сохраняет контекст vim и правильно обрабатывает URL-адреса, содержащие "#".

function! HandleURL()
  let s:uri = matchstr(getline("."), '[a-z]*:\/\/[^ >,;()]*')
  let s:uri = shellescape(s:uri, 1)
  echom s:uri
  if s:uri != ""
    silent exec "!open '".s:uri."'"
    :redraw!
  else
    echo "No URI found in line."
  endif
endfunction

nnoremap <leader>w :call HandleURL()<CR>¬
0 голосов
/ 08 января 2015

Вы должны быстро взглянуть на этот плагин vim

Хенрик / ВИМ-открытым URL

Это в основном то, что было объяснено в некоторых других ответах, но при использовании менеджера плагинов необходима особая конфигурация:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...