IPython can integrate with text editors in a number of different ways:
The %edit command (and its alias %ed) will invoke the editor set in your environment as EDITOR. If this variable is not set, it will default to vi under Linux/Unix and to notepad under Windows. You may want to set this variable properly and to a lightweight editor which doesn’t take too long to start (that is, something other than a new instance of Emacs). This way you can edit multi-line code quickly and with the power of a real editor right inside IPython.
You can also control the editor via the commmand-line option ‘-editor’ or in your configuration file, by setting the InteractiveShell.editor configuration attribute.
Currently, TextMate support in IPython is broken. It used to work well, but the code has been moved to IPython.quarantine until it is updated.
Currently, vim support in IPython is broken. Like the TextMate code, the vim support code has been moved to IPython.quarantine until it is updated.
If you are a dedicated Emacs user, and want to use Emacs when IPython’s %edit magic command is called you should set up the Emacs server so that new requests are handled by the original process. This means that almost no time is spent in handling the request (assuming an Emacs process is already running). For this to work, you need to set your EDITOR environment variable to ‘emacsclient’. The code below, supplied by Francois Pinard, can then be used in your .emacs file to enable the server:
(defvar server-buffer-clients)
(when (and (fboundp 'server-start) (string-equal (getenv "TERM") 'xterm))
(server-start)
(defun fp-kill-server-with-buffer-routine ()
(and server-buffer-clients (server-done)))
(add-hook 'kill-buffer-hook 'fp-kill-server-with-buffer-routine))
Thanks to the work of Alexander Schmolck and Prabhu Ramachandran, currently (X)Emacs and IPython get along very well in other ways.
Note
You will need to use a recent enough version of python-mode.el, along with the file ipython.el. You can check that the version you have of python-mode.el is new enough by either looking at the revision number in the file itself, or asking for it in (X)Emacs via M-x py-version. Versions 4.68 and newer contain the necessary fixes for proper IPython support.
The file ipython.el is included with the IPython distribution, in the directory docs/emacs. Once you put these files in your Emacs path, all you need in your .emacs file is:
(require 'ipython)
This should give you full support for executing code snippets via IPython, opening IPython as your Python shell via C-c !, etc.
You can customize the arguments passed to the IPython instance at startup by setting the py-python-command-args variable. For example, to start always in pylab mode with hardcoded light-background colors, you can use:
(setq py-python-command-args '("-pylab" "-colors" "LightBG"))
If you happen to get garbage instead of colored prompts as described in the previous section, you may need to set also in your .emacs file:
(setq ansi-color-for-comint-mode t)
Notes on emacs support:
[Emacs] | Emacs. http://www.gnu.org/software/emacs/ |
[TextMate] | TextMate: the missing editor. http://macromates.com/ |
[vim] | vim. http://www.vim.org/ |