/vimrunner-python

Control a Vim editor through python code

Primary LanguagePythonMIT LicenseMIT

Vimrunner

Module that implements a client and server interface useful for controlling a Vim editor, started as a server, programmatically. This module could be used for unit testing or integration testing for a Vim plugin written in Python. Or you can use it to interactively control a Vim editor by python code, for example, in an Ipython session.

How it all started

I created a class that used the vim python module to emulate a vim buffer and that would act like a list, so you could read and write lines and manipulate text using python.

However, I stumbled across Vimrunner which is a Ruby gem used to "spawn a Vim instance and control it programatically."

So, this python module is heavily inspired by the project mentioned above.

Installation

There is a vimrunner package on PyPI, so you can install it with:

pip install vimrunner

Alternatively, you can just drop vimrunner.py file into your project - it is self-contained.

Testing

You can run unit tests using the command:

python setup.py test

Usage

import vimrunner

# initialize vim server
vim = vimrunner.Server()

# start GVIM as server and get a client connected to it
client = vim.start_gvim()
client.edit('any_file')
client.source('path/to/vim/plugin')

# start Vim editor in a terminal; it should work for Debian, Ubuntu, etc.
# that have a desktop installed
client = vim.start_in_other_terminal()

Documentation is available at http://andri-ch.readthedocs.org/en/latest/

For any suggestions regarding the module and its documentation, please submit an issue using GitHub issue tracker