如何在vim宏中提供参数

Sła*_*osz 5 vim

通过提示或其他方式在vim中录制宏时是否可以提供一些参数?

编辑:我有这样的代码:

foo
bar
Run Code Online (Sandbox Code Playgroud)

我想用红宝石块包围每一个:

expect do
  foo
end.to raise_error(CustomClass)

expect do
  foo
end.to raise_error(OtherCustomClass)
Run Code Online (Sandbox Code Playgroud)

因此,很容易创建一个将导致的宏:expect do foo end.to raise_error()

expect do
  foo
end.to raise_error()
Run Code Online (Sandbox Code Playgroud)

但是有一个用于设置raise_error方法参数的提示会很好.在每次使用宏时,此参数都会有所不同.

mko*_*tee 7

虽然我同意其他人的意见,如果你需要这个功能,你可能会效率低下,可以将一个可变文本字符串作为宏的一部分插入到文档中.诀窍是将要在宏中使用的文本存储在寄存器中.

  1. 将一些文本移入命名寄存器,例如"xyw将一个单词拖入x寄存器
  2. 记录你的宏,qq当你想放置变量文本时,把它放在一起,例如"xp把文本放在x寄存器中的光标所在的文档中
  3. 现在,当您播放q宏时@q,它将使用x寄存器中当前的任何内容,因此您可以将不同的文本放入x寄存器,播放q宏,并使用新的拉动文本.


Ben*_*oit 6

如果您正在谈论录制宏qx...q,这是不可能的.

但是你仍然可以::let @y = substitute(@x, 'old_pattern', 'replacement', 'g')然后使用@y.

您还可以定义一个函数:

function Play(myArg)
   execute 'normal sequence_of_characters' . a:myArg . 'other_sequence_of_characters'
endfunction

call Play('foo')
Run Code Online (Sandbox Code Playgroud)