Vim and Me

This is a post about my Vim (Neovim) setup, plugins and Unix as (an) IDE.

I think the two keystones for modern Unix as IDE in the vim world are Vim & Tmux. They go together so blissfully well — with fantastic plugin support like — work on local machine or remote machine equally well… it is just great!


  • pathogen: manage your ‘runtimepath’ with ease. In practical terms, pathogen.vim makes it super easy to install plugins and runtime files in their own private directories. I use an ugly zsh script to populate my bundle directory and then check it into version control.


The only theme I currently use is my own nofrils. When working with others I would sometimes turn on molokai or papercolor.


  • abolish: Abolish lets you quickly find, substitute, and abbreviate several variations of a word at once. By default, three case variants (foo, Foo, and FOO) are operated on by every command.
  • commentary: Comment stuff out. Then uncomment it later. Relies on ‘commentstring’ to be correctly set, or uses b:commentary_format if it is set.
  • eunuch: Vim sugar for the UNIX shell commands that need it the most. Delete or rename a buffer and the underlying file at the same time. Load a find or a locate into the quickfix list. Sudosave/Sudoedit, etc
  • fugitive: Whenever you edit a file from a Git repository, a set of commands is defined that serve as a gateway to Git.
  • gutentags: Gutentags is a plugin that takes care of the much needed management of tags files in Vim. It will (re)generate tag files as you work while staying completely out of your way. It will even do its best to keep those tag files out of your way too. It has no dependencies and just works.
  • qf: gobs of little improvements to quickfix!
  • qlist: this puts things like :dlist and :ilist into a quickfix window, makes them way more useful.
  • repeat: If you’ve ever tried using the . command after a plugin map, you were likely disappointed to discover it only repeated the last native command inside that map, rather than the map as a whole. That disappointment ends today. Repeat.vim remaps . in a way that plugins can tap into it.
  • rsi: This plugin provides Readline (Emacs) mappings for insert and command line mode that try not to overlap with built-in Vim functionality.
  • surround: This plugin is a tool for dealing with pairs of “surroundings”. Examples of surroundings include parentheses, quotes, and HTML tags
  • sensible: just a good starting point for any vim config, simple and sane baseline.
  • targets: Targets.vim adds various |text-objects| to give you more targets to operate on. It expands on the idea of simple commands like di' (delete inside the single quotes around the cursor) to give you more opportunities to craft powerful commands that can be repeated reliably. Another major goal is to handle all corner cases correctly.
  • tmux-complete: Allow autocomplete from other panes with user defined completion.
  • ttags: Awesome little plugin for listing / filtering / previewing tags (requires tlib)
  • unimpaired: This plugin provides several pairs of bracket maps. [a ]a [q ]q etc
  • vimux: Easily interact with tmux from vim.

Language Support

  • polyglot: add language support for dozens and dozens of additional languages.
  • vim-go: Go (golang) support for Vim. vim-go installs automatically all necessary binaries for providing seamless Vim integration. It comes with pre-defined sensible settings (like auto gofmt on save), has autocomplete, snippet support, improved syntax highlighting, go toolchain commands, etc… It’s highly customizable and each individual feature can be disabled/enabled easily.