Я использую Twitvim в первый раз. Увидев все URL-адреса, я удивился, есть ли способ открыть URL-адрес под курсором в вашем любимом браузере или указанном вами?
Открыть URL-адрес под курсором в Vim с браузером
Ответ 1
Обновлено: из tpope tweet today
Нажмите 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
Ответ 2
Если вы используете Vim 7.4 или новее, в нормальном режиме, поместите курсор ниже URL-адреса, затем нажмите gx
, URL-адрес будет открыт в браузере автоматически
Ответ 3
Я использую этот script для поиска 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 под курсором. Остальное - то же самое.
Ответ 4
Добавьте следующую строку в файл .vimrc:
nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>
Итак, в обычном режиме он нажимает\он выбирает текущее слово и открывает его как адрес в веб-браузере.
Лидер по умолчанию -\(но я сопоставил его с let mapleader = ","
). Точно так же, используя imap, вы можете отобразить некоторую последовательность клавиш в режиме вставки (но тогда, если это 2 последовательности клавиш, вероятно, она переопределит какое-то поведение по умолчанию).
Ответ 5
Хорошо, поэтому, используя ответы от @tungd и @kev, и небольшое исследование, я закончил с этим script, который работает именно так, как мне нужно. Как @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>
Ответ 6
Я очень опаздываю на эту вечеринку, но здесь есть еще один способ сделать это, особенно хорошо работающий в Windows 7.
-
Установите vim-shell и vim-misc в vim. Я рекомендую сделать это с помощью бесконечного Pathogen плагина, а затем просто
cd ~/vimfiles/bundle & git clone [email protected]:xolox/vim-misc.git & git clone [email protected]:xolox/vim-shell.git
от msysgit. (Эти два плагина открывают URL-адреса в браузере по умолчанию, не создавая лишних подсказок или других глупых глупостей, обычно требуемых в окнах. Вы можете открыть URL-адреса в Vim следующим образом::Open http://duckduckgo.com
. Попробуйте, вам понравится.) -
Создайте несколько сопоставлений vim, чтобы вы могли быстро получить строку под курсором в браузере. Я сопоставил бы это с u (для меня это
,u
из нормального режима). Вот как:nnoremap u: exec "Открыть".getline( "." )
Чтобы использовать это сопоставление, введите свой лидерный ключ из нормального режима + u. Он должен прочитать строку под вашим курсором и открыть ее в браузере по умолчанию.
Ответ 7
Вы должны быстро взглянуть на этот плагин vim
Это в основном то, что было объяснено в некоторых других ответах, но нужна конкретная конфигурация, если вы используете диспетчер плагинов:)
Ответ 8
Это своего рода улучшенная версия скрипта, первоначально предложенная @tungd здесь fooobar.com/questions/85054/.... Сохраняет контекст 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>¬
Ответ 9
Как описано выше @kev, изменено для сред Linux.
Кроме того: когда эта функция была выполнена (Vim 8.1) в моем терминале, экран Vim был запутан (в основном "пустым", т.е. текст был там, но не виден). Команда :redraw!
(см. fooobar.com/info/65860/...) перерисовывает экран.
Добавить в ~/.vimrc
:
nmap <leader>g :call Google()<CR>:redraw!<CR>
fun! Google()
let keyword = expand("<cword>")
let url = "http://www.google.com/search?q=" . keyword
let path = "/usr/bin/"
exec 'silent !"' . path . 'firefox" ' . url
endfun