Faire reconnaître vim / curl https: // liens

J'ai récemment remarqué que vim / vimdiff peut ouvrir des liens (en utilisant curl, il semble), ce qui est une fonctionnalité géniale. Je voulais l'utiliser aujourd'hui, comme ceci:

vimdiff deps https://raw.github.com/symfony/symfony-standard/v2.0.10/deps

Mais le https:// ne semble pas triggersr ce mécanisme génial aussi. Il n'y a pas d'authentification sur cette page, je pense que https:// est juste là pour fournir le encryption des données. Comment puis-je forcer vim à reconnaître le https:// ?

Comme je l'ai dit dans un commentaire, le plugin netrw, qui gère http:// , ne gère pas https:// (en regardant le code du plugin). Je suis allé dans le code et a obtenu https:// fonctionne (pas de garantie, il est sans bug, mais cela a fonctionné pour les sites de couple que j'ai essayé). J'ai créé une paire de correctifs, pour netrw.vim et netrwPlugin.vim . Voici comment les appliquer, en conservant les originaux intacts et les versions corrigées dans votre configuration locale:

  • Assurez-vous d'avoir un ~/.vim/autoload et ~/.vim/plugin .
  • Téléchargez les patches, callbackez-vous où vous les avez sauvegardés (je suppose que c'est à ~/.vim/patches/netrw.patch et ~/.vim/patches/netrwPlugin.patch )
 cp /usr/share/vim/vimcurrent/autoload/netrw.vim ~/.vim/autoload cp /usr/share/vim/vimcurrent/plugin/netrwPlugin.vim ~/.vim/plugin patch ~/.vim/autoload/netrw.vim ~/.vim/patches/netrw.patch patch ~/.vim/plugin/netrwPlugin.vim ~/.vim/patches/netrwPlugin.patch 

Cela fonctionne sur mon vim, 7.3, j'espère vôtre aussi. Sinon, utilisez les modifications comme guide et voyez si vous pouvez le pirater.


Dans le cas où les pastebins disparaissent, ils sont ici:

netrwPlugin.patch

 56c56 < au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>")) --- > au BufReadCmd ftp://*,rcp://*,scp://*,http://*,https://*,dav://*,davs://*,rsync://*,sftp://* exe "silent doau BufReadPre ".fnameescape(expand("<amatch>"))|call netrw#Nread(2,expand("<amatch>"))|exe "silent doau BufReadPost ".fnameescape(expand("<amatch>")) 

netrw.patch

 682c682 < if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://' --- > if choice =~ "^.*[\/]$" && b:netrw_method != 5 && choice !~ '^http://' && choice !~ '^https://' 835c835 < elseif b:netrw_method == 5 --- > elseif b:netrw_method == 5 || b:netrw_method == 50 850c850,854 < exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape("http://".g:netrw_machine.b:netrw_fname,1)." ".g:netrw_http_xcmd." ".shellescape(tmpfile,1) --- > if b:netrw_method == 5 > exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape("http://".g:netrw_machine.b:netrw_fname,1)." ".g:netrw_http_xcmd." ".shellescape(tmpfile,1) > else > exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape("https://".g:netrw_machine.b:netrw_fname,1)." ".g:netrw_http_xcmd." ".shellescape(tmpfile,1) > endif 853c857,861 < exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.b:netrw_fname,1) --- > if b:netrw_method == 5 > exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.b:netrw_fname,1) > else > exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("https://".g:netrw_machine.b:netrw_fname,1) > endif 865c873,877 < exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_html,1) --- > if b:netrw_method == 5 > exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("http://".g:netrw_machine.netrw_html,1) > else > exe s:netrw_silentxfer."!".g:netrw_http_cmd." ".shellescape(tmpfile,1)." ".shellescape("https://".g:netrw_machine.netrw_html,1) > endif 1565a1578 > let httpsurm = '^https://\([^/]\{-}\)\(/.*\)\=$' 1598a1612,1618 > " Method#5.5: https://user@hostname/...path-to-file {{{3 > elseif match(a:choice,httpsurm) == 0 > " call Decho("https://...") > let b:netrw_method = 50 > let g:netrw_machine= substitute(a:choice,httpsurm,'\1',"") > let b:netrw_fname = substitute(a:choice,httpsurm,'\2',"") > 7075c7095 < if w:netrw_method == 2 || w:netrw_method == 5 --- > if w:netrw_method == 2 || w:netrw_method == 5 || w:netrw_method == 50 

J'ai posté l'auteur (drchip) voici sa réponse:

Bonjour,

Netrw v144b supporte déjà https (vous pouvez l'get à partir de http://drchip.0sites.net/astronaut/vim/index.html#NETRW ).

Merci, Charles Campbell

Le site Web a depuis été déplacé et peut actuellement être trouvé à http://www.drchip.org/astronaut/vim/index.html#NETRW

Pour l'installer, je devais juste download le file .vba.gz, le décompresser, l'ouvrir avec vim, puis suivre les instructions (source le file avec :so % ).

Mon .vim est sous contrôle de version, vous pouvez voir le commit ici: https://github.com/greg0ire/dotvim/commit/bfbe569ce070383c9f0a7b966ad23a35eefb651f