VIM用户如何替换一个单词并随后粘贴一个寄存器?

时间:2015-12-03 15:24:31

标签: vim

我经常嘲笑代码块并替换某些单词。例如,使用Visual Line模式我可能会触及下面的代码块:

def meow puts "meow!!" end

我发现自己重复 p :3,5s/meow/bark/g模式。要将粘贴的块更改为:

def bark puts "bark!" end

我想用不同数量的动物声音做几次(可能是"嘎嘎"," moo","鸣声"," yeeha&#34)。如何动态修改寄存器以粘贴更改的单词?

1 个答案:

答案 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"

相关问题