Pandoc and Vim

If you're like me and you find writing in Vim more pleasant than GUI tools, then you're probably a fan of Pandoc. I've got a little Pandoc/Makefile/shell script setup that I've been using to write (sadly unfinished) books, and it works really well with Vim. It basically lets me write in Markdown and then output PDFs.

One issue that I've got with this setup is previewing the results is fiddly. It also took me a while to set up my editor for writing prose rather than code. This whole process could have been avoided if I knew about vim-pandoc, which aims to improve the integration between Vim and Pandoc.

Vim-pandoc directly supports writing Markdown, and can run Pandoc asynchronously so you can continue writing while a preview is generated. It has custom mappings for Markdown, which includes some helpful WYSIWYG-style toggles for emphasis, strong text, subscripts, and so on.

Read More →

Script Roundup: enabler, vim-stay

enabler

enabler (GitHub: tomtom/enabler_vim) by Tom Link is a script for selectively loading bundles. It can be used with a plugin manager like Pathogen, allowing you to avoid slowing down Vim's loading time.

A specific plugin can be loaded with :Enable, and you can enable a set of plugins that you always use in your .vimrc.

If you use Vim on a slow machine or regularly try out lots of plugins, then this will be useful.

Read More →

Rim: A Vim-Inspired Editor Written in Rust

Rust, Mozilla Research's fledgling language, is an interesting choice for developing a text editor. It's designed to be memory safe, with a Haskell-inspired type system. I'd argue that text editors really need to be reliable and safe, so I immediately downloaded and tried out Mathias Hällman's Rim project, a Vim-inspired editor written in Rust.

Rim

Right now Rim isn't usable for real work, but it does demonstrate some core features for manipulating buffers and windows. The readme has a guide to the keyboard shortcuts, which aren't quite like Vim but are easy enough to learn to try it out. You can split windows, close windows, and move the caret with the arrow keys.

Read More →

Neovim and Windows

One of the reasons I started using Vim for serious work was cross-platform support. It felt weird investing time learning editors that were only available for Windows or Mac OS. Recently some strong arguments in support of Neovim have made me use it more regularly in Unix, but I never even considered Windows and just assumed it would work there too.

Well, apparently it doesn't. Regulars at the neovim Google Group have been trying to get it running, but it still has some issues. Rui Abreu Ferreira has a branch called tb-win32-any which has fixes for Windows, and there are gists with build instructions in the main discussion.

It sounds like it only builds on MSVC 2013 update 2, but MSVC 2015 might be needed.

Read More →

Refactor Templates with vim-partial

Partial

If you're a web developer one chore you might be familiar with is extracting reusable chunks from big templates into smaller files. The vim-partial (GitHub: jbgutierrez/vim-partial) plugin by Javier Blanco Gutiérrez automates the process by creating a new file based on a selection and inserting the necessary include line.

Some existing plugins do this, but they're typically tied to a specific language or framework. This project is more generic and configurable -- it understands how to extract things like ejs, stylus, erb, and haml, but you can extend it by setting g:partial_templates. You can also change where the output files are stored with g:partial_templates_roots, and you can even make it show the new file in a split window.

Read More →

PacVim

PacVim

You're a green cursor that must highlight words whilst avoiding red G characters. Welcome to PacVim, a game for learning Vim by Jamal Moon.

The readme has detailed installation instructions, which is great for beginners, and is launched by running pacvim rather than from within Vim itself.

Read More →

Script Roundup: vim-lastplace

vim-lastplace (GitHub: dietsche/vim-lastplace, License: MIT) records the last line you were on when you reopen a file. It can ignore certain files, which means you won't get issues when making Git commits. The ignored files are configurable with g:lastplace_ignore.

This plugin is based around BufReadPost, which allows a command to be added whenever a file is opened. It then positions the cursor using g with a backtick and ", which moves the cursor at the last known position in the file. So it's essentially an intelligent repackaging of a built-in Vim feature, which appealed to me. It goes to show that useful plugins don't need a huge amount of code!

Read More →

Geoff Greer on NeoVim vs. Vim

Geoff Greer has been writing about Vim and the issues with its codebase, and how NeoVim aims to fix everything. He wrote Floobits for Vim, which is a collaborative editing plugin. During the development of Floobits, Geoff ran into several issues that were caused by Vim's scripting API. He now claims, in Why Neovim is Better than Vim, that the only good thing about Vim is the interface:

Every other aspect of Vim is irredeemable. The codebase is atrocious. The plugin API is cumbersome and restrictive. The dev community is apathetic. The benevolent dictator is averse to change. There is no chance of fixing these problems.

His complaints directly relate to the motivations behind the NeoVim project:

Read More →

qutebrowser: A Vim-Inspired Browser

qutebrowser

I've tried a lot of Vim browser plugins before -- whether in Chrome or Firefox there are a lot of choices now. One project that's new to me is qutebrowser, which is actually a browser rather than a browser extension.

It's got a keybinding cheatsheet, so you can see how similar to Vim it is. It's based on PyQt5 and QtWebKit, and has a minimal GUI that wouldn't look out of place on a tiling window manager. In fact, it was inspired by dwb, which is influenced by Vimperator.

Read More →