For example, when I type following command,
echo line | (cat >/dev/null; vi)
even wrapped in another shell,
sh -c 'echo line | (cat >/dev/null; vi)'
and returned from Vim, now it won't display carriage return any more.
How can I do to make it again display the new lines? (Without exit.)
try one or both of these:
ctrl+c
, then typereset
, then pressenter
.ctrl+c
, then typestty sane
, then pressenter
.the
ctrl+c
is to clear any other characters you might have typed in the command line.reset
orstty sane
usually fixes a messed up terminal. Read the man page ofreset
andstty
for more information.Note that if the terminal is messed up enough then it might be that not even
ctrl+c
orenter
will work as expected. There are still other methods to input characters, but they involve ancient dark magic. In that case, it is usually easier to just close the terminal and start another one.My understanding of the inner workings of a terminal is not deep enough to explain why or how it does that.
It is not the intended use for
vi
to take input from stdin.Anyway, you can get newlines again with
without resetting the terminal.