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.
Réponses
Trop de publicités?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>¬
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>
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.
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.
-
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. ) -
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.
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
2 votes
Le clic intermédiaire pour ouvrir est probablement une fonctionnalité du terminal, et non de vim.
2 votes
Notez que
gx
semble complètement cassé dans vim 8.2 à cause d'un bogue : vi.stackexchange.com/questions/22459/