=== Configure ipython terminal prompts === ==== Task ==== The idea here is to change the default ipython terminal prompts such that a typical session looks like In [1]: a='foo' a Out[1]: 'foo' instead of In [1]: a='foo' ...: a Out[1]: 'foo' which is the default. The new version makes it easy to copy paste stuff across sessions. ==== Steps ==== Create a profile (~/.ipython/profile_default/ipython_config.py) if it is not already created by running ipython profile create Add the following to ~/.ipython/profile_default/ipython_config.py #------------------------------------------------------------------------------ # Customize terminal prompts. # The goal here is to make it easy to copy paste stuff from/to ipython # sessions. This is achieved by # * adding an extra line to the input and output prompts # * removing the continuation prompt # To build the original prompt, I am using # https://github.com/ipython/ipython/blob/master/IPython/terminal/prompts.py from IPython.terminal.prompts import Prompts from pygments.token import Token class MyPrompt(Prompts): # keep the original input prompt but add an extra line def in_prompt_tokens(self): return [ (Token.Prompt, self.vi_mode() ), (Token.Prompt, 'In ['), (Token.PromptNum, str(self.shell.execution_count)), (Token.Prompt, ']: '), (Token.Prompt, '\n'), ] # remove the continuation prompt. def continuation_prompt_tokens(self, width=None): return [ (Token.Prompt, ''), ] # keep the original output prompt but add an extra line def out_prompt_tokens(self): return [ (Token.OutPrompt, 'Out['), (Token.OutPromptNum, str(self.shell.execution_count)), (Token.OutPrompt, ']: '), (Token.OutPrompt, '\n'), ] c.TerminalInteractiveShell.prompts_class = MyPrompt #------------------------------------------------------------------------------ tags | add a newline to ipython input prompt, change ipython terminal prompts, ipython paste without the dots