我经常嘲笑代码块并替换某些单词。例如,使用Visual Line模式我可能会触及下面的代码块:
def meow
puts "meow!!"
end
我发现自己重复 p 和:3,5s/meow/bark/g
模式。要将粘贴的块更改为:
def bark
puts "bark!"
end
我想用不同数量的动物声音做几次(可能是"嘎嘎"," moo","鸣声"," yeeha&#34)。如何动态修改寄存器以粘贴更改的单词?
答案 0 :(得分:4)
您可以将变量项目存储在列表中,然后弹出一个项目 Ctrl-R = remove(mylist,0)
返回宏每次插入不同的东西。例如,首先猛拉你的块:
V3jy
初始化包含所需项目的列表:
:let l=["quack", "moo", "honk", "yeeha"]
然后快速记录一个宏,每次弹出列表中的不同项目:
qaPV']:s/meow/<c-r>=remove(l,0)<cr>/g<cr>'[q
注意:上面的<c-r>
是 Ctrl-R 键,而<cr>
是返回键。
录制宏后,列表中只剩下3个项目,因此,执行3@a
将填充您的文件:
def yeeha
puts "yeeha!!"
end
def honk
puts "honk!!"
end
def moo
puts "moo!!"
end
def quack
puts "quack!!"
end
def meow
puts "meow!!"
end
您可以通过多种方式调整此技巧,例如,如果您不想使用列表,而是使用寄存器(假设为@e
),则可以录制不同的宏:
qaPV']:s/meow/<c-r>e/g<cr>'[q
然后在每次宏调用之前使用此命令::let @e="something"