When opening manpages with man
on a Linux/Unix system, the manpage is printed and fed into a line viewer such as less (1)
. However, the utility used to open and view manpages can be easily changed by exporting the $MANPAGER
environment variable to something else. Other possible utilities include batcat
, vim
, and even gedit or Firefox just for fun.
(NOTE: do not use gedit or Firefox as your primary manpager.)
When a manpage is opened using man
, it is converted to a readable format and sent to the manpager via stdin. The $MANPAGER
variable defines where the manpage is sent (by default, it is piped to less
). It should contain a shell command that takes input from stdin and does something with it.
The following examples are some useful or interesting ways to use this functionality. Some are original, some aren’t. To set one of these as your default manpager, you can copy the line to your shell’s init file (e.g: .bashrc
, .zshrc
)
# use batcat as manpager export MANPAGER="sh -c 'col -bx | batcat -l man -p'" # use vim as manpager # I found this one in distrotube's .zshrc. link export MANPAGER='/bin/bash -c "vim -MRn -c \"set buftype=nofile showtabline=0 ft=man ts=8 nomod nolist norelativenumber nonu noma\" -c \"normal L\" -c \"nmap q :qa<CR>>"</dev/tty <(col -b)"' # gedit export MANPAGER="sh -c 'col -bx | gedit -s -'" # firefox export MANPAGER="sh -c 'col -bx < /tmp/manpage; firefox -new-tab /tmp/manpage; rm -rf /tmp/manpage'" # zenity export MANPAGER="sh -c 'col -bx | xargs -0 -I \"%\" | zenity --info --window-icon=\"question\" --width=700 --height=900 --text=\"%\"'" # print manpages to stdout export MANPAGER="cat" # read messages using text-to-speech export MANPAGER="sh -c 'col -bx | espeak'" # print manpages in rainbow export MANPAGER="sh -c 'col -bx | lolcat'"