@@ -7,140 +7,27 @@ Interactive Input Editing and History Substitution
77Some versions of the Python interpreter support editing of the current input
88line and history substitution, similar to facilities found in the Korn shell and
99the GNU Bash shell. This is implemented using the `GNU Readline `_ library,
10- which supports Emacs-style and vi-style editing. This library has its own
11- documentation which I won't duplicate here; however, the basics are easily
12- explained. The interactive editing and history described here are optionally
13- available in the Unix and Cygwin versions of the interpreter.
14-
15- This chapter does *not * document the editing facilities of Mark Hammond's
16- PythonWin package or the Tk-based environment, IDLE, distributed with Python.
17- The command line history recall which operates within DOS boxes on NT and some
18- other DOS and Windows flavors is yet another beast.
19-
20-
21- .. _tut-lineediting :
22-
23- Line Editing
24- ============
25-
26- If supported, input line editing is active whenever the interpreter prints a
27- primary or secondary prompt. The current line can be edited using the
28- conventional Emacs control characters. The most important of these are:
29- :kbd: `C - A ` (Control-A) moves the cursor to the beginning of the line, :kbd: `C - E `
30- to the end, :kbd: `C - B ` moves it one position to the left, :kbd: `C - F ` to the
31- right. Backspace erases the character to the left of the cursor, :kbd: `C - D ` the
32- character to its right. :kbd: `C - K ` kills (erases) the rest of the line to the
33- right of the cursor, :kbd: `C - Y ` yanks back the last killed string.
34- :kbd: `C - underscore ` undoes the last change you made; it can be repeated for
35- cumulative effect.
36-
37-
38- .. _tut-history :
39-
40- History Substitution
41- ====================
42-
43- History substitution works as follows. All non-empty input lines issued are
44- saved in a history buffer, and when a new prompt is given you are positioned on
45- a new line at the bottom of this buffer. :kbd: `C - P ` moves one line up (back) in
46- the history buffer, :kbd: `C - N ` moves one down. Any line in the history buffer
47- can be edited; an asterisk appears in front of the prompt to mark a line as
48- modified. Pressing the :kbd: `Return ` key passes the current line to the
49- interpreter. :kbd: `C - R ` starts an incremental reverse search; :kbd: `C - S ` starts
50- a forward search.
10+ which supports various styles of editing. This library has its own
11+ documentation which we won't duplicate here.
5112
5213
5314.. _tut-keybindings :
5415
55- Key Bindings
56- ============
57-
58- The key bindings and some other parameters of the Readline library can be
59- customized by placing commands in an initialization file called
60- :file: `~/.inputrc `. Key bindings have the form ::
61-
62- key-name: function-name
63-
64- or ::
65-
66- "string": function-name
67-
68- and options can be set with ::
69-
70- set option-name value
71-
72- For example::
73-
74- # I prefer vi-style editing:
75- set editing-mode vi
76-
77- # Edit using a single line:
78- set horizontal-scroll-mode On
16+ Tab Completion and History Editing
17+ ==================================
7918
80- # Rebind some keys:
81- Meta-h: backward-kill-word
82- "\C-u": universal-argument
83- "\C-x\C-r": re-read-init-file
84-
85- Note that the default binding for :kbd: `Tab ` in Python is to insert a :kbd: `Tab `
86- character instead of Readline's default filename completion function. If you
87- insist, you can override this by putting ::
88-
89- Tab: complete
90-
91- in your :file: `~/.inputrc `. (Of course, this makes it harder to type indented
92- continuation lines if you're accustomed to using :kbd: `Tab ` for that purpose.)
93-
94- .. index ::
95- module: rlcompleter
96- module: readline
97-
98- Automatic completion of variable and module names is optionally available. To
99- enable it in the interpreter's interactive mode, add the following to your
100- startup file: [# ]_ ::
101-
102- import rlcompleter, readline
103- readline.parse_and_bind('tab: complete')
104-
105- This binds the :kbd: `Tab ` key to the completion function, so hitting the
106- :kbd: `Tab ` key twice suggests completions; it looks at Python statement names,
107- the current local variables, and the available module names. For dotted
108- expressions such as ``string.a ``, it will evaluate the expression up to the
109- final ``'.' `` and then suggest completions from the attributes of the resulting
110- object. Note that this may execute application-defined code if an object with a
111- :meth: `__getattr__ ` method is part of the expression.
112-
113- A more capable startup file might look like this example. Note that this
114- deletes the names it creates once they are no longer needed; this is done since
115- the startup file is executed in the same namespace as the interactive commands,
116- and removing the names avoids creating side effects in the interactive
117- environment. You may find it convenient to keep some of the imported modules,
118- such as :mod: `os `, which turn out to be needed in most sessions with the
119- interpreter. ::
120-
121- # Add auto-completion and a stored history file of commands to your Python
122- # interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
123- # bound to the Esc key by default (you can change it - see readline docs).
124- #
125- # Store the file in ~/.pystartup, and set an environment variable to point
126- # to it: "export PYTHONSTARTUP=~/.pystartup" in bash.
127-
128- import atexit
129- import os
130- import readline
131- import rlcompleter
132-
133- historyPath = os.path.expanduser("~/.pyhistory")
134-
135- def save_history(historyPath=historyPath):
136- import readline
137- readline.write_history_file(historyPath)
138-
139- if os.path.exists(historyPath):
140- readline.read_history_file(historyPath)
141-
142- atexit.register(save_history)
143- del os, atexit, readline, rlcompleter, save_history, historyPath
19+ Completion of variable and module names is
20+ :ref: `automatically enabled <rlcompleter-config >` at interpreter startup so
21+ that the :kbd: `Tab ` key invokes the completion function; it looks at
22+ Python statement names, the current local variables, and the available
23+ module names. For dotted expressions such as ``string.a ``, it will evaluate
24+ the expression up to the final ``'.' `` and then suggest completions from
25+ the attributes of the resulting object. Note that this may execute
26+ application-defined code if an object with a :meth: `__getattr__ ` method
27+ is part of the expression. The default configuration also saves your
28+ history into a file named :file: `.python_history ` in your user directory.
29+ The history will be available again during the next interactive interpreter
30+ session.
14431
14532
14633.. _tut-commentary :
@@ -162,14 +49,6 @@ into other applications. Another similar enhanced interactive environment is
16249bpython _.
16350
16451
165- .. rubric :: Footnotes
166-
167- .. [# ] Python will execute the contents of a file identified by the
168- :envvar: `PYTHONSTARTUP ` environment variable when you start an interactive
169- interpreter. To customize Python even for non-interactive mode, see
170- :ref: `tut-customize `.
171-
172-
17352.. _GNU Readline : http://tiswww.case.edu/php/chet/readline/rltop.html
17453.. _IPython : http://ipython.scipy.org/
17554.. _bpython : http://www.bpython-interpreter.org/
0 commit comments