When we share code, it should be as readable as possible, i.e.:
- Syntax highlighted.
- Using a monospaced font.
It should also be frictionless: fiddling with tools detracts from the flow state.
Vim makes it easy to export part or all of your buffer, including syntax highlighting. The :TOhtml
command generates an HTML version of your buffer’s contents. You can copy it from a browser tab, and paste it into any HTML-aware editor (such as a Gmail message, a Google Doc, or a Google Groups post). The syntax highlighting comes along for the ride!
Vim makes this easy… but not easy enough.
- You need to save the HTML file and open it in a browser.
- You need to select the text from the browser tab and copy it.
- You also need to delete the HTML file when you’re done, so you don’t litter your directories!
Enter syncopate.
syncopate
stands for syntax copy-paste. It’s all the convenience of :TOhtml
, but none of the friction.
First, select some code (or don’t, if you want the whole buffer). Then call the :SyncopateExportToClipboard
command. Syncopate will:
- Change to the default colorscheme (which tends to look better on white backgrounds).
- Populate the clipboard with the (syntax-highlighted!) contents of your buffer.
- Restore your colorscheme settings.
It gets even more frictionless if you enable mappings. Let’s say your <Leader> is ,
. Then ,<>
(mnemonic: think of HTML tags) will export the entire file.
Better yet, syncopate
works with vim’s text objects to make it a breeze to grab just the area you want. That’s right: ,<ip
exports the current paragraph!
Easy to configure
There are two main ways to configure syncopate
.
Generic :TOhtml
options
See :help :TOhtml and just start scrolling; the options (e.g., g:html_no_progress
) are listed below.
syncopate-specific
Syncopate is a maktaba plugin, so it’s easy to configure it with Glaive.
:help syncopate-configure
gives a list of all the options. Here are a few examples.
-
change_colorscheme
: Set this to false to keep your current colorscheme, and export exactly what you see. (This is true by default because the default colorscheme works better on the white-ish backgrounds one commonly encounters in practice.) -
clear_bg
: Setting this will output a transparent background. Useful when your colorscheme almost-but-not-quite matches the background of your slides—or especially if those slides have a color gradient!
So if you wanted to export your current colorscheme, except with a transparent background, you might use a line like this:
Glaive syncopate !change_colorscheme clear_bg
This works in your .vimrc
, or—with tab-completion!—on the fly in a live vim session.
So, what’s missing?
Mac and Windows support.