Skip to content

Latest commit

 

History

History
143 lines (109 loc) · 5.23 KB

README.md

File metadata and controls

143 lines (109 loc) · 5.23 KB

vim-instant-markdown

open collective badge

Want to instantly preview finicky markdown files, but don't want to leave your favourite editor, or have to do it in some crappy browser text area? vim-instant-markdown is your friend! When you open a markdown file in Vim, a browser window will open which shows the compiled markdown in real-time, and closes once you close the file in Vim.

As a bonus, github-flavored-markdown is supported, and styles used while previewing are the same as those GitHub uses!

Screenshot

Installation

Quick start (assuming you have all the necessary dependencies):

  • Install the Node.js mini-server by running either:

    • [sudo] npm -g install instant-markdown-d or, for the pre-release version:
    • [sudo] npm -g install instant-markdown-d@next

    or the following command for the Python mini-server (which also requires pandoc to render markdown):

    • pip install --user smdv
  • Add the following to your .vimrc, depending on the plugin manager of your choice:

    • vim-plug

      Plug 'instant-markdown/vim-instant-markdown', {'for': 'markdown', 'do': 'yarn install'}
    • Vundle

      Plugin 'instant-markdown/vim-instant-markdown'
    • Vim8 built-in package manager (Execute the following command instead of adding it to .vimrc)

      # NOTE:
      # 1. Please check you have git installed.
      # 2. Please replace * with a package name you want.
      git clone https://github.com/instant-markdown/vim-instant-markdown.git ~/.vim/pack/*/start/

Detailed instructions

  • If you're on Linux, ensure the following packages are installed:
  • If you're on Windows, you will need into install cURL and put it on your %PATH%.
  • If you do not use a plugin manager, copy the ftplugin/markdown/instant-markdown.vim file into ~/.vim/ftplugin/markdown/ (creating directories as necessary),
  • Open a markdown file in Vim and enjoy!

Arch-based distributions

Configuration

Minimal default configuration:

filetype plugin on
"Uncomment to override defaults:
"let g:instant_markdown_slow = 1
"let g:instant_markdown_autostart = 0
"let g:instant_markdown_open_to_the_world = 1
"let g:instant_markdown_allow_unsafe_content = 1
"let g:instant_markdown_allow_external_content = 0
"let g:instant_markdown_mathjax = 1
"let g:instant_markdown_mermaid = 1
"let g:instant_markdown_logfile = '/tmp/instant_markdown.log'
"let g:instant_markdown_autoscroll = 0
"let g:instant_markdown_port = 8888
"let g:instant_markdown_python = 1
"let g:instant_markdown_theme = 'dark'

After installing the plugin, execute :help vim-instant-markdown-configuration to read more about what the different configuration options imply.

Supported Platforms

OSX, Linux^, and Windows^^.

^ One annoyance in Linux is that there's no way to reliably open a browser page in the background, so you'll likely have to manually refocus your Vim session every time you open a Markdown file. If you have ideas on how to address this I'd love to know!

^^ In Windows, there's no easy way to execute commands asynchronously without popping up a cmd.exe window. Thus, if you run this plugin without g:instant_markdown_slow, you might experience performance issues.

FAQ

  1. It's not working!

    • Make sure instant-markdown-d was installed and verify using InstantMarkdownDPath.
    • Try to launch with Vim and vim-plug and this minimal.vimrc as vim -u vim -u minimal.vimrc my_markdown_file.md
    • If you're on OSX and are using zsh, try to add set shell=bash\ -i in your .vimrc to set interactive bash as the default Vim shell. (See this issue)
  2. How to start it when autostart is off?

    You can use the command :InstantMarkdownPreview to manually start the preview.
    BTW, to disable it, use :InstantMarkdownStop.

If you're curious, the code for the mini-server component for this plugin can be found at http://github.com/instant-markdown/instant-markdown-d. A plugin can easily be written for any editor to interface with the server to get the same functionality found here.