views:

319

answers:

1

Let's say I want to create the alias %xed for %edit -x. How would I do it?

+1  A: 

Update: The first response( below) does not accept parameters. So put this snippet at the end of the ipy_user_conf.py file ( it is in your home directory ).

def ed_xed(self,arg):
    ip = self.api
    return ip.magic.im_class.magic_edit(ip.IP," -x %s "%arg)

ip.expose_magic('xed',ed_xed)

Before update: Does it has to be %magic? You can use the macro and store magic to reproduce this behavior without the magic %.

In [5]: %edit -x
In [6]: macro xed 5
In [7]: store xed
In [8]: xed

for magic alias from the documentation ( %magic? ):

You can also define your own aliased names for magic functions. In your ipythonrc file, placing a line like:

execute IPYTHON.magic_pf = IPYTHON.magic_profile

will define %pf as a new name for %profile.

But I don't know how too add the parameter.

Igal Serban
This is close, but it then prevents you from typing xed file.py to open a new or existing file of the given name.
Lawrence Johnston
Fixed, I think. Ignore the before update. You can delete the macro with: store -d xed
Igal Serban
Yup, that works.So what you're doing is describing an entirely new %magic, which in turn is calling the usual %edit with the added parameter.self is the current instance of the IPython shell, which it looks like IPython passes in as the first parameter.Is that all more or less accurate?
Lawrence Johnston
Yes. But its a lot of guess work, as I don't have real knowledge of the IPython internals. This solution may be broken in subtle ways that I am not aware of currently. But, if we don't break our development tools, what can we break?
Igal Serban
This is great.. I just modified it toip.expose_magic('vi',ed_xed) as my fingers could never get uset to typing ed
michael