如何从命令行为 ex 发出多个命令?

如何从命令行为 ex 发出多个命令?

我正在尝试使用 vim 的 ex 模式来编写我想要编写的脚本,但我似乎无法弄清楚允许我编写多个命令的语法。

我的代码看起来像这样:

ex -c 'normal! 2gg19|^V49gg59|y' geom.inc

因此,这只是进入文件 geom.inc 的 ex 模式,突出显示文本块,然后拉出该文本块。我想补充的是,一旦完成此操作,它将关闭文件,但我似乎无法弄清楚如何包含附加命令来关闭文件。我一般都知道“|”用于将命令串在一起,但我尝试过的组合都不起作用。它通常会导致它认为其中一个命令是另一个文件。

答案1

我犯了愚蠢的错误。正如 @Jeff Schaller 上面所建议的,多个 -c 提示符将允许多个命令。所以,我的工作示例如下所示。

ex -c 'normal! 2gg19|^V49gg59|y' -cwq geom.inc

我进入 ex 模式ex,提示命令-c,定义一个块normal! 2gg19|^V49gg59|y(其中normal!允许使用常规 vi 命令,2gg19|意味着移动到第 2 行和第 19 列,^V进入可视块模式,49gg59|移动到第 49 行和第 59 列,并y拉动块),然后提示另一个命令写入并退出-cwq

答案2

我倾向于通过管道输入命令,例如:

$ echo '
  0r !seq 10
  w test
' | ex
$ cat test
1
2
3
4
5
6
7
8
9
10

答案3

只需在末尾加上“x”或“wq”命令即可

ex -c execute 'normal! 2gg19|^V49gg59|y|x' geom.inc

相关内容