I’ve talked casually about using Vim as a pager before. However, I’m still surprised to see how many people use Vim regularly and don’t know about this feature.
Here’s a quote straight from vim --help
vim [arguments] - read text from stdin
Admittedly, it’s easy to overlook the hyphen in the explanation.
Why Vim as a Pager?
If you’re using Vim already, there’s nothing else to install.
If you’re using Vim already, it’s already configured the way you like it.
More importanly, Vim detects the kind of file it is being piped and turns on the appropriate syntax highlighting. Why page in black and white? In this case, “less” is definitely less!
Improving the experience
As a pager, you want to use Vim in read-only mode.
some command | vim -R -
What the difference? Vim doesn’t ask you to save the file if you try to quit. Of course, you can still modify and write the file … the -R flag is just a more reasonable pager default.
PAGER variable and ANSI Escape Sequences
You probably don’t want to set the PAGER variable. Vim doesn’t understand ANSI escape sequences. As such, a command like “man vim | vim -R -” won’t show colors; it will show escape sequences.
I haven’t found any quick and simple solution to make Vim show ANSI escape sequences, but it’s pretty easy to strip them out before passing the file to Vim:
man vim | col -b | vim -R -
I use less as PAGER. I use vim in explicit cases.
The view command gets installed at the same time as vim. It’s just a symlink to vim. Using view is exactly like typing vim -R.
There’s a certain aesthetic in:
some command | view -
But I find that typing vim -R - is easier on my finger’s muscle memory.