从命令行运行 vim 命令

sds*_*sds 4 vim batch

我需要在几个文件中执行以下操作:dt{%lx:wq,即

  1. 删除到第一个{
  2. 找到匹配的}
  3. 删除下一个字符
  4. 保存并退出

如何在不打开屏幕的情况下从命令行执行此操作?

vi -c 'dt{%lx:wq'显而易见的失败

E492: Not an editor command: dt{%lx:wq
Run Code Online (Sandbox Code Playgroud)

我想我需要将每个命令 - dt{, %, l, x- 转换为ex命令。如何找到命令?

ken*_*orb 5

您可以同时使用viex,例如:

ex -s +'norm dt{%lx' -cwq foo
Run Code Online (Sandbox Code Playgroud)

对于vi,只需添加-e(对于 Ex 模式):

vi -es +'norm dt{%lx' -cwq foo
Run Code Online (Sandbox Code Playgroud)

因此,为了使您的示例正常工作,基本上您需要添加norm/ normal,它在正常模式下执行命令(就像您在 Vi 中键入一样)。

关键参数是:

  • -s- 静音模式不会打开屏幕。对于在终端中工作很有用。
  • -e- Ex-模式(vi/vim命令所必需的)ex默认情况下已经有
  • -cwq- 更好的做事方式:wq

如果仍有问题,请添加-V详细内容。

有关更多示例,请检查: