我想替换下面的代码:
<input name="rating" id="rating">
<input name="rating" id="rating">
<input name="rating" id="rating">
<input name="rating" id="rating">
...
<input name="rating" id="rating">
于:
<input name="rating1" id="rating1">
<input name="rating2" id="rating2">
<input name="rating3" id="rating3">
<input name="rating4" id="rating4">
...
<input name="rating100" id="rating100">
如何通过vim替换实现增加?
谢谢!
答案 0 :(得分:13)
我从一行开始:
<input name="rating1" id="rating1">
然后record a macro q q yanks the whole line y y ,{{ 3}} p 和pastes it below Ctrl - a increments the two numbers Ctrl - 一。停止录制宏 q 。
然后w 98次 9 8 @ q 。
但是我花了太多时间玩run the macro!
答案 1 :(得分:4)
假设它始终是您想要附加到“rating”一词的当前行号,您可以使用:
:%s#rating\zs#\=line(".")#g
答案 2 :(得分:1)
有一种简单有效的技术来实现基于计数器的技术 Vim中的替换。我在my answer提出了这个问题 “gVim find/replace with counter”。要理解这个想法,请参阅 回答以及我对相关问题的回答:“Using Vim, how do you use a variable to store count of patterns found?”和“CSV search and replace”。
同样,此问题中描述的问题可以通过命令
解决:let n=[0] | %s/="rating\zs\ze"/\=map(n,'v:val+1')/g