2012-06-17 13 views
19

Sto sostituendo tutti i frammenti di gist inline con un div per caricarli in modo non bloccante. Per modificare tutti gli articoli precedenti che hanno le seguentiCome trovare la sostituzione usando i gruppi di espressioni regolari in vim

<script src='https://gist.github.com/1234.js?file=gistfile1.sh'></script> 

ho bisogno di sostituirlo con il seguente invece

<div data-gist=1234><a href='http://gist.github.com/1234'>gistfile1.m</a></div> 

Finora quello che sto cercando (vim newb qui) -doesn't sembrano a lavorare

:%s/<script src='https:\/\/gist.github.com\/(d+).js?file=gistfile1.sh'><\/script>/<div data-gist={1}><a href='http://gist.github.com/{1}'>gistfile1.m</a></div>//g 

risposta

47

ho preso a lavorare con questo:

:%s!<script src='https://gist.github.com/\(\d\+\).js?file=gistfile1.sh'></script>!<div data-gist=\1><a href='http://gist.github.com/\1'>gistfile1.m</a></div>!g 

paio di cose da notare:

  1. ho usato ! invece di / come separatore per evitare di dover fuggire percorso barre
  2. Hai bisogno di fuggire (, d, + e ) nel tentativo.
  3. Hai aggiunto / alla fine.
  4. Per inserire il gruppo di partita, utilizzare \1 invece di {1}
+0

bello! l'unica cosa da notare è che devi iniziare con:% s –

+0

Risolto, grazie. – Tim

+0

una modifica veloce -come posso ignorare il file = (il nome del file varia) e non ho bisogno di questo durante la sostituzione in modo che possa essere perso (mi dispiace per l'oscilloscopio) ** risulta che ho avuto vari nomi di file per ogni gist e in realtà non significano molto per questa implementazione –

Problemi correlati