Using Vim/Neovim for Presentation

Using Vim or Neovim for presentation.

Vim/Neovim Presentation


In the previous article, I talked about using Emacs for presentation. Specifically for Emacs, we can use Org mode for keeping notes, maintaining to-do lists, planning projects, authoring documents, computational notebooks, literate programming, and more.

In this article, let’s explore the options we have for Vim/Neovim.


There are quite a number of plugins developed for Vim/Neovim for presentation purposes. However, not many are maintained and updated at this point of writing.

presenting.vim is a Vim plugin that turns your markup into presentable slides in Vim/Neovim. For most scenarios, this plugin should be more than sufficient for presentation purposes. This plugin uses Markdown syntax which makes it very easy for you to create slides for presentation.

Using my own dotfiles, I can easily install it using packer.nvim.

return require('packer').startup(function()    -- Packer can manage itself as an optional plugin
use {'wbthomason/packer.nvim', opt = true}
use {'sotte/presenting.vim'}end)

As an example, I am going to use the sample presentation markdown file from presenting.vim.

And below is the key bindings I used.

augroup presentation
" Presentation mode
au Filetype markdown nnoremap <buffer> <F10> :PresentingStart<CR>
" ASCII art
au Filetype markdown nnoremap <buffer> <F12> :.!toilet -w 200 -f term -F border<CR>
augroup end
  • F10 starts the presentation.
  • F12 uses toilet command to draw a rectangle around the text.

By default

  • n: next slide
  • p: previous slide
  • q: quit the presentation

Below are few screenshots of the presentation which are pretty impressive.

Presentation Slide in Vim
Presentation Slide in Vim
Presentation Slide in Vim
Presentation Slide in Vim
Presentation Slide in VIm

Besides Markdown, the plugin also supports RST, Org-mode, and Golang slide file types.

Depending on your terminal, you can adjust the font type and size to fit your presentation requirements, e.g. using toilet you can make the font bigger or smaller.

Vim + Pandoc + reveal.js

This may not be a pure Vim/Neovim solution. Pandoc is a universal document converter, and reveal.js is an HTML presentation framework. For Vim/Neovim, I am going to use vim-pandoc to create the presentation in Markdown and convert it to an HTML presentation using Pandoc.

Let’s install vim-pandoc.

return require('packer').startup(function()-- Packer can manage itself as an optional plugin
use {'wbthomason/packer.nvim', opt = true}
use {'vim-pandoc/vim-pandoc'}
use {'vim-pandoc/vim-pandoc-syntax'}

In my Vim configuration, I need to configure the global variables so that it recognizes the Markdown file.

let g:pandoc#filetypes#handled = ["pandoc", "markdown"]
let g:pandoc#filetypes#pandoc_markdown = 0

Type :Pandoc and you can see the available options for document conversions.

Pandoc Document Converter


Using the following command, an HTML presentation should be created.

:Pandoc revealjs -s --mathjax -i
reveal.js Presentation


The presentation generated using the following command

:Pandoc slidy -s --mathjax -i

There are many options available. E.g. you can convert the Markdown to PDF, Word, Latex, PowerPoint, and many other formats. Refer here for examples.


As developers, most of the time you do not need bloated presentation software. Using a familiar code editor like Vim/Neovim or Emacs is definitely a good choice.


Programmer and occasional blogger.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store