2013-03-25 2 views
1

В Sublime Text 2, я пытаюсь создать фрагмент, который будет обертывать каждую строку выделенного фрагмента тегами и обертывать полный выбор в содержащем теге.Подчиненный текст Сниппет Замена RegEx

<container> 
    ${SELECTION/^.*/<li>$MATCH<\/li>/g} 
</container> 

Это не работает, но я не знаю, почему! Благодаря!

ответ

2

Это должно сделать трюк:

<snippet> 
    <content><![CDATA[${SELECTION/^.*/<li>$0<\/li>/g}]]></content> 
    <scope>text.html</scope> 
    <description>wrap with li</description> 
</snippet> 
  1. Вы не оборачивать свой фрагмент кода в CDATA (по крайней мере, в приведенном выше примере). Sublime текст очень частности, об этом, к сожалению :(
  2. Синтаксис замена может быть немного напуганный. $MATCH не работает здесь. Лучше использовать стиль PERL $ 0 $ 1 $ 2 и т.д. ... для групп.

лучший гид я нашел (до сих пор), что имеет дело с Sublime Snippets и регулярных выражений находится в unnoficial docs

Кроме того, убедитесь, что вы ставите свой фрагмент в каталоге packages/User после формата mysweetsnippet.sublime-snippet.

+0

Это приводит к появлению тега вокруг начала и конец всего выбора, но не каждая строка выбора. Это странно, поскольку я проверил соответствие регулярному выражению, используя 'find', и он соответствует каждой строке. – Beezer900

+0

Хм. Я буду изучать по очереди. Моя рекомендация состояла бы в том, чтобы выполнить это с плагином [Emmet] (http://docs.emmet.io/actions/wrap-with-abbreviation/#wrapping-individual-lines) (который использовался для ZenCoding). Это позволит вам обернуть отдельные строки в любом HTML-теге, который вы хотите, с многострочным редактированием Sublime. –

+0

Спасибо за помощь. Я использую Emmet - это здорово, и я думаю, что вы только что дали мне идею ... – Beezer900