【问题标题】:Is there a way to let vi run editing commands in a file?有没有办法让 vi 在文件中运行编辑命令?
【发布时间】:2021-09-09 15:02:16
【问题描述】:

假设我有一个包含一些编辑命令的文件“edit_commands”,例如:

:1,$s/good/better/g
:1,$s/bad/worse/g

有没有办法让vi加载并运行“edit_commands”中的命令?

更新: 看来“-S”选项可以用于此。参考: How to run a series of vim commands from command prompt

【问题讨论】:

标签: vim vi


【解决方案1】:

您似乎想要使用像 sed 这样的程序,它共享一个 与 vi(即“ed”编辑器)共同完成此类任务:

sed -i 's/good/better/g; s/bad/worse/g' your_file

看到这个很棒的sed tutorial

您是否有理由需要使用 vi 来执行此操作?如果您需要更高级的正则表达式功能,可以使用 perl。

【讨论】:

  • 在某些情况下,这可能是一种解决方法。然而,sed 中的正则表达式引擎相当弱(即使是 GNU 扩展)。
  • @JoeSmith 如果您需要高级正则表达式功能,您可以使用 perl(但我不太了解它,无法给出基于 perl 的答案)
【解决方案2】:

Perl 中的解决方案可能是这样的:

perl -i.old -pe 's/good/better/g || s/bad/worse/g' your_file

-i.old 选项将旧文件的副本保存在名称 your_file.old 下,当情况变得更糟和更糟时非常有用...

【讨论】:

  • 感谢您的提示。会试一试的。
猜你喜欢
  • 2014-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2012-08-15
  • 2022-10-21
相关资源
最近更新 更多