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>