我正在尝试使用 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