【问题标题】:How to execute a vim macro string in command line?如何在命令行中执行 vim 宏字符串?
【发布时间】:2015-08-08 17:09:23
【问题描述】:

Vim 中的宏对于执行在普通命令行工具(sedawkperl 等)中难以完成的任务非常有用,有什么方法可以执行那种宏字符串在命令行中?

类似于以下内容:

// execute macro stored in register a 100 times for filenames
vim execute -s "100@a" filenames [filenames2, filenames3, ...]

【问题讨论】:

  • vim -s 从命令行运行脚本。不过,把它做好可能会很棘手。

标签: vim macros command-line-interface


【解决方案1】:

对于那些执行一些普通命令(如宏)有困难并再次退出的人,可以先定义宏。

vim files* -c "let @l=\"ggOStart\<Esc>GoEnd\<Esc>\" | argdo normal @l | ZZ"

该命令将在每个以files* 开头的文件的开头插入“Start”,在末尾插入“End”,但可能会应用任意宏。

这样就可以在宏不存在的情况下定义和执行它。如果您想使用任何关键符号,例如提到here\&lt;Esc&gt;,则必须使用和转义双引号\"

通过在末尾添加ZZ,文件被写入并再次关闭。命令可以用| 符号连接。

【讨论】:

    【解决方案2】:

    你快到了:

    $ vim file* -c "argdo norm 100@a"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 2020-05-27
      • 1970-01-01
      • 2013-07-01
      • 2018-04-09
      • 2011-02-15
      • 2013-09-22
      相关资源
      最近更新 更多