Vim /其他编辑批量编辑

时间:2011-03-03 17:28:06

标签: vim editor


我有这个样本清单:
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>
有没有快速和DRY方法呢?

3 个答案:

答案 0 :(得分:1)

您可以使用宏在vim中执行此操作。您可以通过按q,然后按某个键来开始录制宏,宏将保存到该键中。例如,qa将开始将宏记录到密钥(或注册)a中。然后你会做一次替换,但你必须确保这样做,如果你之后执行宏它也适用于列表中的下一个单词。再次按q可停止录制。如果您正确录制了宏,则可以按a执行保存在寄存器@a中的宏,这将自动执行下一次替换。

答案 1 :(得分:1)

您可以使用宏。它的工作原理如下:

  1. vim my.xml
  2. :sp拆分窗口
  3. C-w j转到底部窗口
  4. :e mylist.txt
  5. 现在你打开了这两个文件。让我们做一个宏!

    1. qa记录“a”宏
    2. dw删除第一个列表项
    3. C-w k转到顶部窗口
    4. 1G转到my.xml的开头
    5. /\{value\}并按返回以查找{value}
    6. 的第一个实例
    7. P过去{value}
    8. 之前
    9. wd7l跳转到{value}并将其删除
    10. C-w j跳转到底部窗口
    11. q结束录制宏
    12. 现在多次调用你的宏。对于10个项目列表,请尝试:

      10@a

      瞧!

答案 2 :(得分:1)

也许像下面这样的小脚本会更合适:

#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