vim sparkup номер элемента в содержании

Используя плагин sparkup для vim (в частности, vim-gnome в Ubuntu 15.04, хотя я сомневаюсь, что это имеет значение), я создаю список с номерами элементов:

ion-content.has-tabs > .list > a.item[href=#/item/$]{Item $}*3

Результат заменяет номер элемента в [href=#/item/$] но не в {Item $}:

<ion-content class="has-tabs"> <div class="list"> <a href="#/item/1" class="item">Item $</a> <a href="#/item/2" class="item">Item $</a> <a href="#/item/3" class="item">Item $</a> </div> </ion-content>

Функция, ошибка или ошибка пользователя?

3 ответа

Решение

Я уверен, что этот плагин считает $ в фигурных скобках как текст, который не должен быть затронут. Для нумерации вашего списка $ Item, вы можете попробовать эту команду

:let @a=1 | %s/\$/\=(@a+setreg('a',@a+1))/g

или для выбранного блока в визуальном режиме

:let @a=1 | '<,'>s/\$/\=(@a+setreg('a',@a+1))/g 

Я не помню, чтобы Sparkup когда-либо поддерживал увеличивающиеся числа внутри фигурных скобок, поэтому я бы сказал "особенность".

Не тратьте свое время на исправление проблемы с плагином.

Я принял ответ на вопрос в том виде, в котором я его задавал, но я добавляю его, чтобы показать альтернативный подход для немного другого требования. Мне нужно было добавить вложенный тег вместе с текстом, который Sparkup не поддерживает. Таким образом, я нашел единственное двухэтапное решение, которое также решило проблему с исходным номером изделия (более сложное в моем реальном решении, но упрощенное здесь).

Эта спаркап:

ion-content > .list > a.item.item-icon-left.Item$[href=#/items/$]*3 > i.icon.ion-email

генерирует это:

<ion-content> <div class="list"> <a href="#/items/1" class="item item-icon-left Item1"> <i class="icon ion-email"></i> </a> <a href="#/items/2" class="item item-icon-left Item2"> <i class="icon ion-email"></i> </a> <a href="#/items/3" class="item item-icon-left Item3"> <i class="icon ion-email"></i> </a> </div> </ion-content>

Затем после того, как я выделю строки в визуальном режиме, запустив это:

:'<,'>s/ Item\([0-9]*\)">/">Item \1/g

дает желаемый результат:

<ion-content> <div class="list"> <a href="#/items/1" class="item item-icon-left">Item 1 <i class="icon ion-email"></i> </a> <a href="#/items/2" class="item item-icon-left">Item 2 <i class="icon ion-email"></i> </a> <a href="#/items/3" class="item item-icon-left">Item 3 <i class="icon ion-email"></i> </a> </div> </ion-content>

Другие вопросы по тегам