Why won't the terminal display new lines?
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.)
Solution 1:
try one or both of these:
- type
ctrl+c
, then typereset
, then pressenter
. - type
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
or stty sane
usually fixes a messed up terminal. Read the man page of reset
and stty
for more information.
Note that if the terminal is messed up enough then it might be that not even ctrl+c
or enter
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.
Solution 2:
It is not the intended use for vi
to take input from stdin.
Anyway, you can get newlines again with
stty sane
without resetting the terminal.