我需要在几个文件中执行以下操作:dt{%lx:wq
,即
- 删除到第一个
{
- 找到匹配的
}
- 删除下一个字符
- 保存并退出
如何在不打开屏幕的情况下从命令行执行此操作?
vi -c 'dt{%lx:wq'
失败显而易见
E492: Not an editor command: dt{%lx:wq
我想我需要将每个命令 - dt{
、%
、l
、x
- 转换为ex
命令。我如何找到命令?
答案1
您可以同时使用vi
和ex
,例如:
ex -s +'norm dt{%lx' -cwq foo
对于vi
,只需添加-e
(对于 Ex 模式):
vi -es +'norm dt{%lx' -cwq foo
因此,为了使您的示例发挥作用,基本上您需要添加norm
/ normal
,它会在普通模式下执行命令(就像您在 Vi 中输入的那样)。
关键参数包括:
-s
- 静音模式不会打开屏幕。适合在终端中工作。-e
vi
- Ex-mode( /vim
命令所必需),ex
默认情况下已存在-cwq
- 更好的做法:wq
如果仍有问题,请添加-V
详细信息。
更多示例请参见:
- 如何以非交互方式编辑文件(例如在管道中)?在 Vi SE
- Ex 模式有实际用途吗?在 Vi SE