J'utilise Twitvim pour la première fois. Voir toutes les URL qui y figurent m'a fait me demander s'il existe un moyen d'ouvrir l'URL sous le curseur dans votre navigateur préféré ou dans un navigateur spécifié
Mise à jour: à partir du tweet de tpope aujourd'hui
Appuyez sur gx
. Vous pouvez personnaliser le navigateur. Sur Gnome et Mac OS X, il utilise déjà gnome-open
/open
. Généralement, vous pouvez définir g:netrw_browsex_viewer
comme bon vous semble.
Réponse originale:
Ne me souviens pas où j'ai cette fonction. Il y a un bug avec hash (#) dans l'URL, mais la fonction fonctionne assez bien pour que je ne me dérange pas pour le réparer.
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>
Remarque: Si vous n’êtes pas sur Mac, utilisez gnome-open
/xdg-open
pour Linux ou "chemin de votre navigateur Web" pour Windows.
Si vous utilisez Vim 7.4 ou version ultérieure, en mode normal, placez votre curseur sous l'URL, puis cliquez sur gx
. L'URL sera ouverte dans le navigateur automatique.
J'utilise ce script pour rechercher sur Google keyword
sous le curseur:
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
Vous devez utiliser getline('.')
et matchstr()
pour extraire l’URL sous le curseur. Le reste est le même.
Je suis assez en retard pour cette soirée, mais voici une autre façon de faire qui fonctionne particulièrement bien sous Windows 7.
Installez les deux vim-Shell et vim-misc dans vim Je vous recommande de le faire via ever-awesome Pathogen plugin, puis simplement cd ~/vimfiles/bundle & git clone [email protected]:xolox/vim-misc.git & git clone [email protected]:xolox/vim-Shell.git
à partir de msysgit. (Ces deux plugins ouvrent des urls dans votre navigateur par défaut sans créer d'invites de commande supplémentaires ni d'autres absurdités idiotes habituellement nécessaires dans Windows. Vous pouvez ouvrir les urls dans Vim comme ceci: :Open http://duckduckgo.com
. Essayez-le. Vous allez l'aimer.)
Créez des mappages vim afin que vous puissiez rapidement obtenir la ligne sous le curseur dans le navigateur. Je mapperais ceci sur u (pour moi, c'est ,u
du mode normal). Voici comment:
nnoremap u: exec "Open" .getline (".")
Pour utiliser ce mappage, tapez votre clé Leader en mode normal + u. Il devrait lire la ligne sous votre curseur et l'ouvrir dans votre navigateur par défaut.
Ajoutez la ligne suivante au fichier .vimrc:
nmap <leader><space> yiW:!xdg-open <c-r>" &<cr>
Donc, en mode normal, appuyer sur\sélectionne Word actuel et l’ouvre comme adresse dans le navigateur Web.
Leader par défaut est\(mais je l'ai mappé sur, avec let mapleader = ","
). De même, en utilisant imap, vous pouvez mapper une séquence de touches en mode insertion (mais s'il s'agit d'une séquence de 2 touches, elle remplacera probablement un comportement par défaut).
Ok, donc en utilisant les réponses de @tungd et @kev et un peu de recherche, je me suis retrouvé avec ce script, qui fonctionne exactement comme je le devais. Comme @tungd a dit le # peut donner un problème si à l'intérieur d'une URL, mais je suis cool avec ça, si quelqu'un a une meilleure expression pour l'URL alors il sera bien accueilli.
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>
Comme décrit ci-dessus par @ kev , modifié pour les environnements Linux.
De plus: lorsque cette fonction a été exécutée (Vim 8.1) dans mon terminal, l'écran Vim était obscurci (la plupart du temps "masqué;" c'est-à-dire que le texte était là mais pas visible). La commande :redraw!
(voir https://stackoverflow.com/a/1117742/190494 ) redessine l'écran.
Ajouter à ~/.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
Vous devriez jeter un coup d'œil à ce plugin vim
C'est en gros ce qui a été expliqué dans d'autres réponses, mais une configuration spécifique est nécessaire si vous utilisez un gestionnaire de plugins :)
Ceci est une sorte de version améliorée du script initialement proposé par @tungd ici https://stackoverflow.com/a/9459366/7631731 . Conserve le contexte vim et gère correctement les URL contenant "#".
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>¬