【问题标题】:What would be a good approach to wrapping macro action in a function? [duplicate]将宏操作包装在函数中的好方法是什么? [复制]
【发布时间】:2012-06-15 19:13:38
【问题描述】:

可能重复:
Saving vim macros

我总是跨行使用宏,它们是救命稻草。但最近,我开始使用它们来做一些更复杂的文件操作,我想将它们记录到一个函数中,或者以某种方式在 Vim 会话中使用它们,这样我就不必每次都重新记录它们是时候退出 Vim 了。

最简单的方法是什么?

【问题讨论】:

  • @pb2q - 我会说相关,但不是重复的。但感谢您的链接。它回答了我的部分询问。
  • 是的,我明白了。你确实特别提到了在你的宏周围包装一个函数。

标签: vim


【解决方案1】:
function! MyMacro()
   normal "paste your macro here
endfunction

但我同意 Idan Arye 的观点:使其成为用 vimscript 编写的适当函数可能是更好的解决方案。

【讨论】:

    【解决方案2】:

    Vim 宏实际上只是保存在寄存器中的文本,并且由于寄存器是跨会话保存的 - 您的宏会自动保存。

    但是,在我看来,宏背后的整个想法是您可以快速创建它们,使用它们,然后丢弃它们。如果你想要更永久的东西,你应该努力编写自定义命令或键盘映射 - 如果这是一个复杂的宏,你应该用适当的 vimscript(或任何其他脚本语言 vim 支持)为它编写一个函数。

    如果您要经常使用它,您希望能够不时对其进行更改和修复 - 但这在宏中很难做到,因为它们是代表击键的文本字符串 - 而不是命令.

    【讨论】:

    • 我通常编写需要从第 1 行第 1 列开始的宏,然后考虑到这一点来操作文件。到目前为止,这种方法对我有用。所以现在,我只想将它们放在一个函数中并命名该函数并为菜单设置一个快捷方式,这样我就可以在需要时将这些操作放在附近,而无需重新录制宏。尝试过 vimscript,但这要容易得多,我觉得重写所有内容都不值得。
    • 好吧,正如我所说,宏基本上是文本。所以我猜你可以使用:normal 命令来创建一个运行特定宏的函数。只需确保转义所有特殊字符(将特殊字符直接存储在文本文件中是个坏主意)
    猜你喜欢
    • 2013-06-09
    • 1970-01-01
    • 2012-02-28
    • 2019-10-12
    • 1970-01-01
    • 2017-09-04
    • 2019-03-02
    • 2016-08-18
    • 2016-07-14
    相关资源
    最近更新 更多