Info.vim provides two features: syntax highlighting for Info files generated from Texinfo, and it implements a reader for browsing and navigating through Info files installed on the user's system.
Info is the file format of the info
command-line program and Emacs's
Info-mode. This format is most often generated from Texinfo source files and
used for software documentation. Texinfo is the official documentation format
of GNU. Check out this asciicast for a live demonstation:
![doc/screenshot.png](doc/screenshot.png)
Install it like any other Vim plugin. You must have at least version 6.4 of the
GNU Info command-line tool installed on your system (older versions might work,
but I haven't tested them). You can set the binary by setting the g:infoprg
variable to its path.
This plugin is still very much under construction, so any of this may change in
the future. There is a interactive tutorial available via :Info info.vim
. To
open an Info document run
" Open the directory listing
:Info
" Open a particular document
:Info <file>
" Same as above, but jump to specific node
:Info <file> <node>
The placeholder <file>
is the topic you want to read about, e.g. :Info bash
to read the manual for the Bourne Again Shell. Alternatively you can also open
a buffer with a URI pattern like this:
:edit info://
:edit info:<file>
:edit info:<file>#<node>
You could call :e info:bash
in a buffer to open the same document as above.
Use the :Menu
command to follow a node's menu entries.
" Display menu in location list
:Menu
" Jump to entry 'Introduction'
:Menu Introduction
" Short form works as well
:Menu intro
You can also use tab completion with the :Menu
command.
You can follow cross-references using the :Follow
command:
" Display all cross references in location list
:Follow
" Follow a named cross-reference
:Follow Name of the reference
Use the K
key in normal mode to follow the reference under the cursor, works
for both menu entries and cross references.
Use the commands :InfoUp
, :InfoNext
and :InfoPrev
to navigate to
respective node. Alternatively, add mappings like these to your settings.
" Only apply the mapping to generated buffers
if &buftype =~? 'nofile'
nmap <buffer> gu <Plug>(InfoUp)
nmap <buffer> gn <Plug>(InfoNext)
nmap <buffer> gp <Plug>(InfoPrev)
endif
You can access the menu via the :InfoMenu
command. It supports
tab-completion, and if no argument is given all menu items are listed in the
location list. If you want a prompt similar to standalone Info use a mapping
like this:
" Only apply the mapping to generated buffers
if &buftype =~? 'nofile'
nmap <buffer> gm <Plug>(InfoMenu)
endif
You can follow a cross-reference using the :InfoFollow
command. You can remap
the prompt to something more convenient:
" Only apply the mapping to generated buffers
if &buftype =~? 'nofile'
nmap <buffer> gf <Plug>(InfoFollow)
endif
You can set Vim as your default standalone Info reader with this little trick:
# Create a shell function as a wrapper
viminfo () {
vim -R -M -c "Info $1 $2" +only
}
# Alias info to our new function
alias info=viminfo
This snippet creates a shell function which invokes Vim with the :Info
command and splices in the command-line arguments. We can alias it to info
if
we want to replace the standalone Info reader. Add the above lines to your
shell configuration file to make it permanent.
The goal for the first stable release is feature-parity with standalone Info. These features depend on support from standalone Info, so my hands are tied for the time being.
- Index lookup (
:Index
command) - Search within a file (
:Search
command) - Going to a specific node in the file (
:Goto
command) (implemented, but without tab-completion)
If you like this plugin please consider financially supporting its development, every small amount helps; you can become a regular supporter through LiberaPay or tip me with a one-time donation over Ko-Fi. Feel free to explore my other software projects as well.