【问题标题】:Vim - How to run a non normal mode command in all buffers?Vim - 如何在所有缓冲区中运行非正常模式命令?
【发布时间】:2012-08-29 13:35:54
【问题描述】:

我需要在所有打开的缓冲区中运行此命令:perldo s/assigned_to(?!_member|_role)/assigned_to_member/g。我正在使用:perldo,因为内置的vim 正则表达式(即%s/foo/bar/g)由于某种原因不能用于我的否定前瞻。

通过我的研究,我找到了:bufdo:execute "normal <foo>" 命令,但我还没有弄清楚如何组合它们。

有谁知道如何在所有打开的缓冲区上运行 perldo 命令? 谢谢!

【问题讨论】:

    标签: regex vim vi replace


    【解决方案1】:

    有什么问题:

    :bufdo! perldo s/assigned_to(?!_member|_role)/assigned_to_member/g
    

    【讨论】:

    • 成功了! !:bufdo 之后有什么作用?这可能就是我所缺少的!
    • 我建议在 Vim 中阅读 :h bufdo!。如果您没有时间 (khm):如果 perldo 失败(无法替换任何缓冲区中的任何内容)“正常”:bufdo“退出”。使用!perldo 命令在下一个缓冲区继续。
    • 感叹号要么强制执行某些操作(例如wq!),要么充当切换开关。但这取决于命令。在这种情况下,对于bufdo,如果无法放弃缓冲区,则该命令将失败。
    猜你喜欢
    • 2011-03-02
    • 2022-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多