2012-06-17 37 views
19

Tôi đang thay thế tất cả các đoạn mã gist nội tuyến bằng một div để tải chúng theo cách không chặn. Để sửa đổi tất cả các bài viết di sản mà có những điều sau đâyCách tìm thay thế bằng các nhóm regex trong vim

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

tôi cần phải thay thế nó với những điều sau thay vì

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

Cho đến nay những gì tôi đang cố gắng (vim newb đây) -doesn't vẻ làm việc

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

Trả lời

47

tôi đã nhận nó để làm việc với điều này:

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

Couple điều cần lưu ý:

  1. tôi đã sử dụng ! thay vì / như seperator để tránh việc để thoát khỏi con đường chém
  2. Bạn cần phải thoát khỏi (, d, +, và ) trong nỗ lực của bạn.
  3. Bạn có thêm / vào cuối.
  4. Để chèn các nhóm phù hợp, sử dụng \1 thay vì {1}
+0

tốt đẹp! điều duy nhất cần lưu ý là bạn cần phải bắt đầu với:% s –

+0

Cố định, cảm ơn bạn. – Tim

+0

một chỉnh sửa nhanh - tôi có thể bỏ qua tệp = (tên tệp khác nhau) và tôi không cần điều này trong khi thay thế để có thể bị mất (xin lỗi đến phạm vi creep) ** hóa ra tôi có nhiều tên tệp khác nhau cho mỗi Gist và họ không thực sự có ý nghĩa nhiều cho việc thực hiện này –

Các vấn đề liên quan