less|cat - побеждает cat!

Вопрос, конечно, интересный. Уважаю вашу любознательность.

Но умываю руки. :)

Покапайтесь в исходниках. Мне кажется, что разница в поведении между more и vim принципиальна. Vi (vim) не предназначен для работы в конвейерах. Он даже из конвейра данные не принимает.
man tree| vim
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Хотя мне никогда в голову не приходило данные из конвейера передавать vim.
Покопайтесь в исходниках
Ну тут понятно, если это происходит, то но как-то реализовано: грубо говоря, для more, если tcgetattr() возвращает -1, то просто копируется stdin в stdout...
Он даже из конвейера данные не принимает.
вообще-то принимает:
man tree| vim -

А вот тут писано, что это стандартное провидение для POSIX - систем:
If the standard output is not a terminal device, no options other than -s shall have any effect, and all input files shall be copied to standard output otherwise unmodified, at which time more shall exit without further action.

Правда это все только касаемо more, но тенденция в принципе понятна.
Понимаю, что вопрос изначально глупый, поэтому в /dev/null; просто мне такое провидение показалось интересным и неочевидным...
 
Зарегистрироваться или войдите чтобы оставить сообщение.