A two-way integration between Vim and IPython 0.11+
author: Paul Ivanov (http://pirsquared.org)
Using this plugin, you can send lines or whole files for IPython to
execute, and also get back object introspection and word completions in
Vim, like what you get with:
The big change from previous versions of
ipy.vim is that it no longer
the old requires the brittle ipy_vimserver.py instantiation, and since
it uses just vim and python, it is platform independent (i.e. should work
even on windows, unlike the previous *nix only solution)
ipython qtconsole and copy the connection string.
ipy.vim file, which provides new IPython command:
:source ipy.vim (or copy it to ~/.vim/ftplugin/python to load automatically) :IPythonClipboard (or :IPythonXSelection if you're using X11 without having to copy)
The :IPython command allows you to put the full string, e.g.:
:IPython --existing --shell=41882 --iopub=43286 --stdin=34987 --hb=36697
:IPythonClipboard command just uses the
+ register to get the
connection string, whereas
:IPythonXSelection uses the
Sending lines to IPython
Now type out a line and send it to IPython using
<Ctrl-S> from Command mode:
You should see a notification message confirming the line was sent, along
with the input number for the line, like so
In: import os.
<Ctrl-S> also works from insert mode, but doesn't show notification
It also works blockwise in Visual Mode. Strip the leading double quotes and
send these lines using
import this,math # secret decoder ring a,b,c,d,e,f,g,h,i = range(1,10) code =(c,a,d,a,e,i,) msg = '...jrer nyy frag sebz Ivz.\nIvz+VClguba=%fyl '+this.s.split()[g] decode=lambda x:"\n"+"".join([this.d.get(c,c) for c in x])+"!" format=lambda x:'These lines:\n '+'\n '.join([l for l in x.splitlines()]) secret_decoder = lambda a,b: format(a)+decode(msg)%str(b)[:-1] '%d'*len(code)%code == str(int(math.pi*1e5))
Then, go to the qtconsole and run this line:
You can also send whole files to IPython's
%run magic using
IPython's object? Functionality
If you're using gvim, mouse-over a variable to see IPython's ? equivalent. If
you're using vim from a terminal, or want to copy something from the
<leader> is usually
\ (the backslash
key). This will open a quickpreview window, which can be closed by hitting
IPython's tab-completion Functionality
vim-ipython activates a 'completefunc' that queries IPython.
A completefunc is activated using
Ctrl-X Ctrl-U in Insert Mode (vim
default). You can combine this functionality with SuperTab to get tab
For now, vim-ipython only connects to an ipython session in progress.
ipy.vim takes a while to load, I'll eventually move the python code to its own file and do a lazy import (only when the IPython command is called)
The ipdb integration is not yet re-implemented.
Need to add more message handling for sub_channel messages from IPython (i.e. notification of changes which were not sent from vim).
@MinRK for guiding me through the IPython kernel manager protocol.