2012-02-26 20 views
66

Estoy usando Twitvim por primera vez. Ver todas las URL allí me hizo preguntarme, ¿hay alguna manera de abrir la URL bajo el cursor en su navegador favorito o en uno específico?Abrir URL debajo del cursor en Vim con el navegador

+0

debajo del cursor de texto o ¿cursor del ratón? –

+0

cursor de texto ... pero si conoces una manera de hacerlo debajo del cursor del mouse que sería genial también –

+1

haz clic en el botón central del mouse en un enlace en vim siempre me ha funcionado, no sé cómo, aunque –

Respuesta

115

Actualizado: desde el tweet de tpope hoy

Prensa gx. Puedes personalizar el navegador. En Gnome y Mac OS X ya se usa gnome-open/open. En general, puede establecer g:netrw_browsex_viewer en todo lo que desee.


Respuesta original:

no recuerdo dónde consigo esta función. Hay un error con hash (#) en la url, pero la función funciona lo suficientemente bien como para no molestarme en solucionarlo.

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> 

Nota: Si no está en el Mac, utilice gnome-open/xdg-open para Linux, o "camino a su navegador web para Windows

+0

Creo que usaré tu solución :) gracias ... me gustaría ver si hay una manera de obtener solo la URL bajo el cursor, pero no conozco mucho vimscript, así que tendré que trabajar en ese. –

+8

'gx' es tan poderoso, ¡gracias! También abre archivos con aplicaciones apropiadas ™. – blinry

+12

+1: ¿Cómo no sabía de 'gx'? – Johnsyweb

7

puedo utilizar esta secuencia de comandos para buscar gooogle para keyword bajo el cursor:

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 

Debe utilizar getline('.') y matchstr() para extraer url bajo el cursor. El resto es lo mismo

+0

Creo que esto me indicará la solución que estoy buscando con el tiempo ... además esta función será muy útil. ¡Gracias! –

1

Ok por lo que el uso de las respuestas de @tungd y @kev y un poco de investigación terminé con este script, que funciona de la manera que necesito. Al igual que @tungd dijo que el # puede dar un problema si está dentro de una url pero estoy de acuerdo con eso, si alguien tiene una mejor expresión para la url, será bienvenida.

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

Estoy bastante tarde para este partido, pero aquí es otra manera de hacer esto que funciona especialmente bien en Windows 7.

  1. instalar tanto vim-shell y vim-misc en vim recomiendo hacer esto a través del plugin Pathogen siempre impresionante y luego simplemente cd ~/vimfiles/bundle & git clone [email protected]:xolox/vim-misc.git & git clone [email protected]:xolox/vim-shell.git de msysgit. () Estos dos complementos abren urls en su navegador predeterminado sin crear ningún comando adicional u otras tonterías que normalmente se requieren en Windows. Puede abrir URL en Vim de esta manera: :Open http://duckduckgo.com. Pruébelo. Lo querrá.)

  2. Cree algunas asignaciones de vim para que pueda obtener rápidamente la línea con el cursor en el navegador. Me gustaría asignar esto a usted (para mí, eso es ,u del modo normal). Así es como:

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

Para utilizar esta asignación, escriba su clave Líder del modo normal + u. Debería leer la línea debajo del cursor y abrirla en su navegador predeterminado.

1

Agregue la siguiente línea a.archivo vimrc:

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

Así que en el modo normal, presionando \ selecciona palabra actual y abrirlo como la dirección en el navegador web.

Líder por defecto es \ (pero lo he mapeado, con let mapleader = ","). De forma similar, al usar imap puede mapear alguna secuencia de teclas en el modo de inserción (pero luego, si es una secuencia de 2 teclas, probablemente anule algún comportamiento predeterminado).

0

Usted debe echar un vistazo rápido a este plugin vim

henrik/vim-open-url

Se trata básicamente de lo que se ha explicado en algunas otras respuestas, pero la configuración específica que se necesita si se utiliza un administrador de plugins :)

31

Si está utilizando Vim 7.4 o posterior, en modo normal, coloque el cursor debajo de la URL, luego haga clic en gx, la URL se abrirá en el navegador automático demo operate

+0

¿Cómo configura el navegador para que sea Chrome en este ejemplo? (o el navegador que sea) – jm3

+0

@ jm3 Pruebe [': h netrw_gx'] (http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html#netrw-gx): * para Windows 32 o 64, el url y FileProtocolHandler dlls se utilizan. * para Gnome (con gnome-open): se usa gnome-open. * para KDE (con kfmclient): kfmclient se usa * para Mac OS X: se usa open. * de lo contrario, se utiliza el plugin netrwFileHandler. – kba

+0

fuera del tema un poco, pero ¿cómo se graba la pantalla en un gif? ¡quiéralo! –

Cuestiones relacionadas