2012-02-26 13 views
66

Sto usando Twitvim per la prima volta. Vedere tutti gli URL presenti mi ha fatto meraviglia, c'è un modo per aprire l'URL sotto il cursore nel tuo browser preferito o uno specificato?Apri URL sotto il cursore in Vim con il browser

+0

sotto il cursore del testo o cursore del mouse? –

+0

cursore del testo ... ma se si conosce un modo per fare sotto il puntatore del mouse che sarebbe bello anche –

+1

tasto centrale del mouse fare clic su un collegamento in vim ha sempre funzionato per me, non so come, anche se –

risposta

115

Aggiornato dal tweet di oggi tpope

Press gx. Puoi personalizzare il browser. Su Gnome e Mac OS X è già utilizzato gnome-open/open. In genere è possibile impostare g:netrw_browsex_viewer su tutto ciò che si desidera.


risposta originale:

non ricordo dove ottengo questa funzione. C'è un errore con hash (#) nell'URL, ma la funzione funziona abbastanza bene che non mi preoccuperò di risolverlo.

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: Se non siete su Mac, utilizzare gnome-open/xdg-open per Linux, o 'percorso del browser web' per Windows

+0

Penso che userò la tua soluzione :) grazie ... mi piacerebbe vedere se c'è un modo per ottenere solo l'url sotto il cursore, ma non conosco molto vimscript quindi dovrò lavorare su quella. –

+8

'gx' è così potente, grazie! Apre anche i file con le applicazioni appropriate ™. – blinry

+12

+1: Come facevo a non sapere 'gx'? – Johnsyweb

7

Io uso questo script per cercare gooogle per keyword sotto 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 

Si dovrebbe usare getline('.') e matchstr() per estrarre url sotto il cursore. Il riposo è lo stesso.

+0

Penso che questo mi indicherà la soluzione che sto cercando alla fine ... inoltre questa funzione diventerà molto utile. Grazie! –

1

Ok in modo da utilizzare le risposte da @tungd e @ Kev e un po 'di ricerca ho finito con questo script, che funziona proprio nel modo in cui ho bisogno. Come @tungd ha detto che il # può dare un problema se all'interno di un url, ma io sono figo con quello, se qualcuno ha una migliore espressione per l'url allora sarà accolto favorevolmente.

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

Sono abbastanza tardi per questo partito, ma qui è un altro modo di fare questo che funziona particolarmente bene su Windows 7.

  1. installare sia vim-shell e vim-misc in vim Raccomando facendo questo tramite il semplicissimo plug-in Pathogen e quindi semplicemente cd ~/vimfiles/bundle & git clone [email protected]:xolox/vim-misc.git & git clone [email protected]:xolox/vim-shell.git da msysgit. (Questi due plugin aprono gli URL nel browser predefinito senza creare ulteriori prompt di comando o altre sciocchezze di solito richieste in Windows. Puoi aprire gli URL in Vim come questo: :Open http://duckduckgo.com. Provalo.)

  2. Creare alcuni mapping vim in modo da poter ottenere rapidamente la linea sotto il cursore nel browser. Lo mapperei (per me, è ,u dalla modalità normale). Ecco come:

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

Per utilizzare questa mappatura, digitare la chiave di leader dalla modalità normale + u. Dovrebbe leggere la riga sotto il cursore e aprirla nel browser predefinito.

1

Aggiungere la seguente riga a.file vimrc:

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

Quindi, in modalità normale, premendo \ seleziona parola corrente e aprirlo come indirizzo nel browser web.

Leader di default è \ (ma l'ho mappato a, con let mapleader = ","). Allo stesso modo, usando imap puoi mappare alcune sequenze di tasti in modalità di inserimento (ma poi, se è una sequenza di 2 tasti, probabilmente sovrascriverà un comportamento predefinito).

0

Si dovrebbe prendere una rapida occhiata a questo plugin vim

henrik/vim-open-url

è fondamentalmente ciò che è stato spiegato in alcune altre risposte, ma la configurazione specifica necessaria se si utilizza un plugin manager :)

31

Se si utilizza Vim 7.4 o successivo, in modalità normale, posizionare il cursore sotto l'URL, quindi fare clic su gx, l'URL verrà aperto automaticamente nel browser demo operate

+0

come stai impostando il browser come Chrome in questo esempio? (o qualunque browser sia) – jm3

+0

@ jm3 Prova [': h netrw_gx'] (http://vimdoc.sourceforge.net/htmldoc/pi_netrw.html#netrw-gx): * per Windows 32 o 64, il vengono utilizzate le url e le DLL FileProtocolHandler. * per Gnome (con gnome-open): gnome-open è usato. * per KDE (con kfmclient): kfmclient viene utilizzato * per Mac OS X: aperto è utilizzato. * altrimenti viene utilizzato il plug-in netrwFileHandler. – kba

+0

off topic un po ', ma come si registra lo schermo in una gif? lo adoro! –

Problemi correlati