0

在破折号中查看以下会话:

$ printf "foo\nbar\n" > testfile
$ cat testfile
foo
bar
$ vim -E testfile <<-EOS
> 1
> s/foo/baz/
> x
> EOS
$ echo $?
1
$ cat testfile
baz
bar
$ vim -E testfile +'1' +'s/baz/foo/' +'x'
$ echo $?
0
$

我使用 vi 的 ex 模式通过使用 here-document将字符串foo与字符串交换。baz显然这行得通。但是 vim 仍然存在,退出代码为1.

然后我通过直接在命令行上将命令提供给vim来再次baz交换。foo这也有效,并返回退出代码0(如预期的那样)。

here-document 总是返回退出代码 1 的原因是什么?

如果我不编辑文件,甚至会发生这种情况:

$ vim -E testfile <<-EOS
> 1
> p
> q
> EOS
foo
$ echo $?
1
$ 

那里发生了什么事?

4

1 回答 1

0

我现在在vi.stackexchange.com上问了同样的问题(这似乎更合适)并在那里得到了一个非常有用的答案:https ://vi.stackexchange.com/a/19241/21417

于 2019-03-19T20:37:16.513 回答