см. Следующую сессию в тире:
$ 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-режим vi для обмена строкой foo
со строкой baz
с использованием документа здесь. Видимо, это работает. Но тем не менее vim все еще существует с кодом выхода 1
.
Затем я снова обмениваю baz
с foo
, передавая команды непосредственно в командной строке vim. Это тоже работает и возвращает с кодом выхода 0
(как и ожидалось).
По какой причине этот документ всегда возвращается с кодом выхода 1?
Это даже случается, если я не редактирую файл:
$ vim -E testfile <<-EOS
> 1
> p
> q
> EOS
foo
$ echo $?
1
$
Что там происходит?