Interface for controlling a Vim editor using Python code.
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.
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.
You can run unit tests using the command:
python setup.py test
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