Using vim as pager

From raju

Requirement

Use vim as a pager with the following features

  • syntax highlighting should work
  • "less" like key bindings (ex:- q for quit)
  • preserve settings in ~/.vimrc

Assumptions

Assume that the user is using zsh and vim 7.4.

Solution

Add the following line to ~/.zshrc

alias vless="/usr/share/vim/vim74/macros/less.sh"

Use it as

vless file.txt
cat file.txt | vless

In some cases, the latter command does not detect the filetypes correctly . For example, while reading C++ programs through stdin, vim is setting the filetype to 'conf' instead of cpp. As a work around, set the file type on the command line.

cat prog.cpp | vless -c "set ft=cpp" -

Other approaches

  • Instead of using /usr/share/vim/vim74/macros/less.sh, we can use "vim -u /usr/share/vim/vim74/macros/less.vim" . But this does not source standard configuration files such as ~/.vimrc . So all the custom settings will be lost.

System Information

Tested it on Debian Jessie (stable) using

 % dpkg -l vim\* zsh\* | grep ^ii 
ii  vim               2:7.4.488-7  amd64        Vi IMproved - enhanced vi editor
ii  vim-common        2:7.4.488-7  amd64        Vi IMproved - Common files
ii  vim-gtk           2:7.4.488-7  amd64        Vi IMproved - enhanced vi editor - with GTK2 GUI
ii  vim-gui-common    2:7.4.488-7  all          Vi IMproved - Common GUI files
ii  vim-runtime       2:7.4.488-7  all          Vi IMproved - Runtime files
ii  vim-tiny          2:7.4.488-7  amd64        Vi IMproved - enhanced vi editor - compact version
ii  zsh               5.0.7-5      amd64        shell with lots of features
ii  zsh-antigen       1-2          all          manage your zsh plugins
ii  zsh-common        5.0.7-5      all          architecture independent files for Zsh
ii  zsh-doc           5.0.7-5      all          zsh documentation - info/HTML format

Further reading

  •  :h less in vim

Useful shortcuts

The following shortcuts are available when a file is opened this way.

h         List available commands.

<Space>   One page forward          b         One page backward
d         Half a page forward       u         Half a page backward
<Enter>   One line forward          k         One line backward
G         End of file               g         Start of file
N%        percentage in file

/pattern  Search for pattern        ?pattern  Search backward for pattern
n         next pattern match        N         Previous pattern match

:n<Enter> Next file                 :p<Enter> Previous file

q         Quit                      v         Edit file