124 votes

Ouvrir l'URL sous le curseur dans Vim avec un navigateur

J'utilise Twitvim pour la première fois. En voyant toutes les URL, je me suis demandé s'il y avait un moyen d'ouvrir l'URL sous le curseur dans votre navigateur préféré ou dans un navigateur spécifique.

0 votes

Sous le curseur de texte ou le curseur de la souris ?

0 votes

Le curseur de texte ... mais si vous connaissez un moyen de le faire sous le curseur de la souris, ce serait également cool.

1 votes

Le clic du bouton central de la souris sur un lien dans vim a toujours fonctionné pour moi, je ne sais pas comment, cependant

2voto

pappix Points 91

Il s'agit d'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>¬

2voto

Mauro Morales Points 192

Ok donc en utilisant les réponses de @tungd et @kev et un peu de recherche, j'ai fini par obtenir ce script, qui fonctionne exactement comme j'en ai besoin. Comme @tungd a dit le # peut donner un problème si à l'intérieur d'un url mais je suis cool avec ça, si quelqu'un a une meilleure expression pour l'url alors il sera le bienvenu.

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>

2voto

felipec Points 3278

J'ai supprimé tout le code qui n'était pas nécessaire de netrw et je me suis retrouvé avec une seule ligne de code :

nnoremap <silent> gx :execute 'silent! !xdg-open ' . shellescape(expand('<cWORD>'), 1)<cr>

Cela permet d'obtenir le même résultat que netrw, mais en mieux. Remplacer xdg-open con open dans macOS, et start dans Windows.

1voto

Rustavore Points 378

J'arrive un peu tard dans la soirée, mais voici une autre façon de procéder qui fonctionne particulièrement bien sous Windows 7.

  1. Installez les deux vim-shell y vim-misc dans vim Je vous recommande de faire cela via le toujours génial Agent pathogène et ensuite simplement cd ~/vimfiles/bundle & git clone git@github.com:xolox/vim-misc.git & git clone git@github.com:xolox/vim-shell.git de msysgit. ( Ces deux plugins ouvrent les URL dans votre navigateur par défaut sans créer d'invites de commande supplémentaires ou d'autres absurdités habituellement requises par Windows. Vous pouvez ouvrir les urls dans Vim comme ceci : :Open http://duckduckgo.com . Essayez-le. Vous allez l'aimer. )

  2. Créer quelques mappings vim de façon à ce que vous puissiez rapidement obtenir la ligne sous le curseur dans le navigateur. Je mettrais cela en correspondance avec u (pour moi, c'est ,u du mode normal). Voici comment procéder :

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

Pour utiliser ce mappage, tapez votre touche Leader du mode normal + u. Il devrait lire la ligne sous votre curseur et l'ouvrir dans votre navigateur par défaut.

0voto

MoOx Points 3846

Vous devriez jeter un coup d'œil à ce plugin vim

henrik/vim-open-url

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 :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X