Vim / другие редакторы массовое редактирование - PullRequest
1 голос
/ 03 марта 2011


У меня есть этот список образцов:
cat dog lion

И этот код, в который мне нужно вставить его:
<li><img src="images/opcje/{value}.png" alt=""/><label for="wezel">{value}</label><input type="checkbox" id="wezel" {if strstr($opcje,"-{order_number}-")} checked {/if} name="opcje[]" value="-{order_number}-"/></li>

И пример вывода:
<li><img src="images/opcje/cat.png" alt=""/><label for="wezel">cat</label><input type="checkbox" id="wezel" {if strstr($opcje,"-1-")} checked {/if} name="opcje[]" value="-1-"/></li>
Есть ли быстрый и сухой метод для этого?

Ответы [ 3 ]

1 голос
/ 03 марта 2011

Вы можете использовать макрос. Это будет работать примерно так:

  1. vim my.xml
  2. :sp чтобы разбить окно
  3. C-w j чтобы перейти в нижнее окно
  4. :e mylist.txt

Теперь у вас открыты оба файла. Давайте сделаем макрос!

  1. qa для записи макроса 'a'
  2. dw для удаления первого элемента списка
  3. C-w k чтобы перейти в верхнее окно
  4. 1G чтобы перейти к началу my.xml
  5. /\{value\} и нажмите клавишу возврата, чтобы найти первый экземпляр {value}
  6. P до прошлого {value}
  7. wd7l, чтобы перейти к {value} и удалить его
  8. C-w j чтобы перейти к нижнему окну
  9. q для завершения записи макроса

Теперь вызовите ваш макрос несколько раз. Для списка из 10 пунктов попробуйте:

10@a

Voila!

1 голос
/ 03 марта 2011

Возможно, небольшой скрипт, подобный следующему, был бы более уместным:

#bash script
i=0;
for val in {cat,dog,lion}; do 
   i=$((i+1)); 
   sed -e "s/{value}/$val/g;s/{order_number}/$i/g" your_code > new_code_$i
done
1 голос
/ 03 марта 2011

Вы можете сделать это в VIM с помощью макроса. Вы начнете запись макроса, нажав q, а затем какую-нибудь клавишу, в которую макрос будет сохранен. Например, qa начнет запись макроса в ключ (или в регистр) a. Затем вы сделаете замену один раз, но вы должны быть уверены, что сделаете это так, что если вы выполните макрос позже, он также будет работать для следующего слова в вашем списке. Нажмите q еще раз, чтобы остановить запись. Если вы правильно записали свой макрос, вы можете выполнить макрос, сохраненный в регистре a, нажав @a, что автоматически сделает следующую замену.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...