помогите мне создать фрагмент vim (snipmate) - PullRequest
1 голос
/ 01 июня 2011

Допустим, у меня есть следующий фрагмент:

snippet divt
    <div id="${1:div_id}">
        ${2:'some text'}
    </div>

Так что, когда я дважды набираю divt и нажимаю клавишу tab, должен быть выбран «некоторый текст», а когда я нажимаю клавишу tab еще раз, я хочукакой-то текст "будет выбран (без кавычек).Как я могу это сделать?

Редактировать 1: Спасибо за ваши ответы.Вероятно, этот пример имеет больше смысла:

snippet divt
    <div ${1:id="${2:div_id}"}>
    </div>

Иногда я хочу div без идентификатора, поэтому мне нужно иметь возможность полностью удалить id = "div_id".Иногда я хотел бы иметь идентификатор, чтобы я мог изменить только часть div_id.

Ответы [ 2 ]

1 голос
/ 27 июля 2011

В настоящее время я нахожусь в рекламной поездке на UltiSnips , которую я обслуживаю. Фрагмент, который делает именно то, что выглядит для UltiSnips следующим образом:

snippet divt "div" b
<div ${1:id="${2:div_id}"}>
</div>
endsnippet

UltiSnips также поставляется со скриптом-конвертером для сниппетов snipMate, поэтому переключение должно быть безболезненным.

1 голос
/ 01 июня 2011

SnipMate, к сожалению, не поддерживает вложенные заполнители, но, согласно совету @ Benoit, вы можете использовать другой фрагмент при редактировании второго заполнителя. Обязательно принесите с собой волчок.

Я не уверен, что вы хотите достичь с помощью some text против 'some text' - оба обрабатываются абсолютно одинаково в этом контексте каждым html-анализатором на земле - но я бы достиг этого простым

snippet div
    <div id="${1:div_id}">
        ${2}
    </div>

и просто наберите

some text

или

'

, которая будет расширена до (| является кареткой)

'|'

благодаря delimitMate или любому другому подобному плагину тогда

'some text'

Или, возможно, использовать Surround для изменения

some text|

в

'some text'

, набрав

<Esc>v2bS'

С Surround вы также можете начать с

some text

выберите его с помощью

v2e

или что-то подобное и введите

S'

, чтобы добавить кавычки, затем выберите строку с

V

и введите

S<div id="div_id">

для получения

<div id="div_id">
    'some text'
</div>

или сделайте это иначе или ... кто-то должен написать в блоге ВСЕ возможные способы решения данной задачи в Vim.

...