Skip to content
My runtime configuration and plugins for vim (and neovim)
Branch: master
Clone or download
Latest commit 48a5f16 May 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
autoload Updated plugins Sep 27, 2014
local Created a local directory for pathogen plugins that are machine-specific Aug 3, 2017
temp_dirs Re-updated the undo dir git ignore Jun 26, 2016
vimrcs removed TODO May 20, 2019
.gitignore Merge pull request #198 from emazzotta/patch-1 Jun 26, 2016
.gitmodules Added NERDTree git plugin Mar 28, 2019
README.rst Moved updating section of README Aug 1, 2018 Minor updates to install/update scripts and README Aug 1, 2018 Minor updates to install/update scripts and README Aug 1, 2018


Vim Runtime Configuration

My runtime configuration for vim (and neovim).

I wanted a vimrc setup with some sensible defaults and a plugin setup that was reasonably easy to organize and keep up-to-date. I also wanted to make it relatively easy to have plugins and configurations on a per-machine basis.

I started this out using Amir Salihefendic’s ultimate vimrc, which I highly recommend checking out. The configurations, plugins, and organization has changed, but it’s still heavily based on his project.


  • Directory structure details
  • Overview of configurations
  • Add overridden/non-submodule plugins to list
  • Screenshots


Basic Version

To install just the basic version, run:

git clone ~/.vim_runtime

Alternatively, you can just copy the contents of vimrcs/basic.vim into your ~/.vimrc.

Extended Version

The extended version includes the configurations from the basic version as well as some plugins and additional configurations. To install the extended version, run:

git clone ~/.vim_runtime

Using With Neovim

If you use neovim, you'll need to run the following script after installing either version:



Running will pull the latest changes from the repository and initialize/update plugin submodules.

Running will go through each of the submodules and pull from each of their remotes. The changes will need to be staged and committed after updating submodules.

Restore Old Configurations

The install scripts listed above first check for existing config files and create a backup before overwriting them. A unix timestamp is appended to their name so other backups aren’t overwritten.

Backup Files

  • ~/.vimrc.bak.<timestamp> for .vimrc
  • ~/.config/nvim/init.vim.bak.<timestamp> for neovim configs (if applicable)

Included Plugins

Included Syntaxes

Included Color Schemes

vim colorschemes:

  • onedark (default for non-truecolor terminals)
  • A selection of base16 color schemes:
    • oceanicnext (default for nvim on truecolor terminals)
    • eighties
    • materia
    • material
    • material-darker
    • monokai
    • solar-flare
    • solarized-dark
    • solarized-light

Note: vimrcs/extended.vim checks if you’re using neovim and have the environment variable COLORTERM set to truecolor when determining what color scheme to use. As there is no reliable means of detecting true color support, I have my bashrc set up to set COLORTERM to truecolor for various terminal emulators known to support true color. See the section for platform-specific color prompt configs for an example

lightline colorschemes:

  • A modified oceanic-next scheme to match the base16 scheme listed above

Directory Structure

├── autoload
├── bundle
│   ├── colors
│   ├── plugin
│   └── syntax
├── install
├── local
│   ├── colors
│   ├── plugin
│   └── syntax
├── temp_dirs
│   └── undodir
└── vimrcs

Plugins Setup

Plugins are set up as git submodules in the bundle/ directory. Plugins are initialized in install/ To manually initialize submodules and download plugins from their respective repositories:

git submodule update --init --recursive

For organizational purposes, the plugins in bundle/ are placed in colors/, plugins/, and syntax/ so the root of bundle/ doesn’t get cluttered and it’s a little clearer at a glance what each plugin does.

Additional plugins can be included in the local/ directory that aren’t tracked by git. Like bundle/, they can be placed in subdirectories colors/, plugins/, and syntax/, but will still be included if you place them at the root of local/.

Note: At runtime, pathogen infects bundle/, local/, and their colors/, plugins/, and syntax/ subdirectories. This may add to its overhead. I personally haven’t encountered any noticeable impact on performance, but felt it worth mentioning. I’m open to suggestions on a more efficient way of organizing things.


Adding Configurations

Configurations can be added and overwritten by putting them in ~/.vim_runtime/my_configs.vim.

Adding Plugins

Additional plugins can be installed in local/. Like bundle/, they can be placed in subdirectories colors/, plugins/, and syntax/, but will still be included if you place them at the root of local/.

Key Mappings

// TODO: go through mappings and document

<leader> is mapped to ,

Normal mode

* and # search for the word under the cursor

Visual mode

* and # search for the current selection


To uninstall:

  • rm -rf ~/.vim_runtime to remove files
  • (Optional) Restore the backup of ~/.vimrc created by the install script (~/.vimrc.bak.<timestamp>)
  • Remove lines in your ~/.vimrc referencing these files (if applicable)

If you installed for neovim, you’ll also need to:

  • (Optional) restore backup of ~/.config/nvim/init.vim (~/.config/nvim/init.vim.bak.<timestamp>)
  • Remove lines in ~/.config/nvim/init.vim referencing these files (if applicable)
You can’t perform that action at this time.