使用here-doc时,为什么`vim -E`总是以非零退出代码退出?

问题描述 投票:0回答:1

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

$ 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
$

我使用ex-mode of vi通过使用here-document来交换字符串foo和字符串baz。显然是有效的。但是vim仍然存在退出代码1

然后,我再次通过命令行将命令发送到vim,将bazfoo交换。这也有效,并返回0的退出代码(如预期的那样)。

这个文档总是以退出代码1返回的原因是什么?

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

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

那里发生了什么?

shell vim posix heredoc ex
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.