使用引用标记的范围操作编辑 Vim 宏

edit a Vim macro with a range operation that refers to a tag

我创建了一个具有范围 (http://vim.wikia.com/wiki/Ranges) 操作的宏,例如:

:.,'bs/ .*$\n/ /ge^M

然后我想编辑它,我通常会使用 let (http://vim.wikia.com/wiki/Macros#Editing_a_macro):

:let @b=':.,'bs/ .*$\n/ /ge^Mdd'

但对于这些示例,宏定义中的 ' 会导致编辑失败。如何解决这个问题?替代范围语法或定义时转义引号的方法。

我知道我可以重新录制宏,但实际版本比这长得多!

  • 单引号需要在这样的字符串中加倍::let @b=':.,''bs/ .*$\n/ /ge^Mdd'
  • 您可以使用双引号,但也可以使用双反斜杠(如果有的话):let @b=":.,'bs/ .*$\n/ /ge^Mdd"
  • 您可以 :put b 进入暂存缓冲区,编辑,然后 "by$ 再次进入寄存器,而不是 :let